JSON、REST、SOAP、WSDL、SOA:それらをすべてリンクする方法


155

現在いくつかの試験を行っており、私はいくつかの概念に苦労しています。これらはすべて私のメモで本当に「言及」されていますが、それらがどのようにリンクされているのか本当に理解できませんでした。私の理解する限り:

SOA-サービスのコンシューマー/プロバイダーを通信させるソリューション。(私が理解している限り、これは他のすべての包括的な用語です)

WSDL-プロバイダーサービスを記述する言語。

SOAP-メッセージを送信するためにサービスによって使用されるXMLプロトコル「ラッパー」。パラメータを提供するためにWSDLと連携して機能しますか?

REST-機能がSOAPに似ているがXMLを回避する設計パターン?(これは本当にわかりません)

JSON-JavaScriptを使用するXMLの代替?(これについてもわかりません)

インターネットを見回すと、これらのすべてが何であり、どのように相互にリンクしているのか明確に定義されていないようです。

回答:


252

Webアプリケーションを開発していて、アプリケーションの表示から機能を切り離すことにしたとします。これにより、アプリケーションの自由度が高まります。

APIを作成し、他の人にも独自のフロントエンドを実装させる。ここでやったことは、SOA手法を実装すること、つまりWebサービスを使用することです。

Webサービスは、プラットフォームやプログラミング言語に関係なく、標準のインターネットプロトコルを介して機能的なビルディングブロックにアクセスできるようにします。

そのため、何か有用なものの処理と生成を行うバックエンド(Webサービス)と、何でもよいフロントエンド(データを消費する)の間の交換メカニズムを設計します。(Web、モバイル、デスクトップアプリケーション、または別のWebサービス)。ここでの唯一の制限は、フロントエンドとバックエンドが同じ「言語」を「話す」必要があることです。


そこで登場するのがSOAPとRESTです。これらは、Webサービスと通信するために選択する標準的な方法です。

石鹸:

SOAPは内部的にXMLを使用してデータを送受信します。SOAPメッセージは厳密な構造になっており、応答XMLを解析する必要があります。 WSDLは、どのような要求を行うことができ、どのパラメーターを使用して、何を返すかを指定したものです。これは、APIの完全な仕様です。

残り:

RESTは設計コンセプトです。

ワールドワイドウェブは、RESTアーキテクチャスタイルに準拠したシステムの最大の実装を表しています。

SOAPほど厳格ではありません。RESTful Webサービスは、標準のURIとメソッドを使用してWebサービスを呼び出します。URIを要求すると、オブジェクトの表現が返され、操作を実行できます(GET、PUT、POST、DELETEなど)。データを表すためにXMLを選択するだけでなく、実際に何でも選択できます(JSONを含む)

FlickrのREST APIはさらに進んで、画像を返すこともできます。


JSONXMLは機能的に同等であり、一般的な選択肢です。また、Protobufに基づくGRPCのようなRPCベースのフレームワークや、APIプロデューサーとコンシューマー間の通信に使用できるApache Thriftもあります。すべての言語で簡単に使用および解析できるため、Web APIで使用される最も一般的な形式はJSONです。


36
JSONとXMLのコップアウトまでの優れた回答。よりバランスの取れたバージョンは、XMLとJSONはデータをシリアル化する方法です。XMLの方が柔軟性が高く、その周りに設計された多くの標準がありますが、XMLは複雑すぎて冗長であると感じています。JSONはいくつかの基本的な構造を簡潔に定義する単純な形式であり、非公式のデータ構造に簡単に使用できます。一部の人々は、XMLの上に存在する標準を複製するために、その上で標準に取り組んでいます。
IMSoP 2014年

30

WSDL:Webサービス記述言語の略

SOAP(シンプルオブジェクトアクセスプロトコル)では、Webサービスを使用してプロジェクトにWebサービスを追加すると、クライアントアプリケーションはWebサービスの機能を認識しません。今日では、何となく古臭く、異なる種類のクライアントごとに異なるWSDLファイルを実装する必要があります。たとえば、.Netphpクライアントで同じファイルを使用することはできません。WSDLファイルには、Webサービスの機能に関するいくつかの説明があります。このファイルのタイプはXMLです。SOAPの代替ですREST

REST:表現状態転送の略

これは別の種類のAPIサービスであり、クライアントにとって本当に使いやすいものです。彼らはファイルのような特別なファイル拡張子を持つ必要はありませんWSDL。CRUD操作が異なることによって実現することができるHTTP Verbs(所望の文書を削除するための更新とDELETEの読み出し、POST創造、PUTまたはパッチGET)、それらは基づいているHTTPプロトコルと応答が入っている時間のほとんどJSONまたはXMLフォーマット。一方、クライアントアプリケーションは、正確HTTP Verbなパラメーター名と型を介して、関連するものを正確に呼び出す必要があります。などの定義用の特別なファイルがないためWSDL、エンドポイントを使用する手動のジョブです。しかし、クライアント側の実装を生成するためのさまざまなIDEのためのプラグインがたくさんあるので、それは大した問題ではありません。

SOA:サービス指向アーキテクチャの略

すべてのプログラミングとWebサービスの概念とアーキテクチャが含まれています。大規模なアプリケーションを実装したいとします。1つの方法として、マイクロサービスと呼ばれるいくつかの異なるサービスを使用することができ、アプリケーションメカニズム全体が必要なWebサービスを適切なタイミングで呼び出すことになります。RESTSOAPWebサービスはどちらも一種ですSOA

JSON:の略javascript Object Notation

JavaScriptのオブジェクトをシリアル化する場合、オブジェクト形式のタイプはJSONです。あなたが人間のクラスを持っていると想像してください:

class Human{
 string Name;
 string Family;
 int Age;
}

そして、あなたはこのクラスからいくつかのインスタンスを持っています:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

h1オブジェクトをJSONにシリアル化すると、結果は次のようになります。

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascripteval()関数によってこのフォーマットを評価し、このJSON文字列から連想配列を作成できます。これは、以前に説明した他の概念と比較して、異なる概念です。


この回答にはいくつかの間違い(HTML <> HTTPなど)が含まれています
Yassin Hajaj

1
@YassinHajaj修正
Saman Gholami
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.