web-dev-qa-db-ja.com

JSON、REST、SOAP、WSDL、およびSOA:どのようにしてそれらすべてが連携するのですか。

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

SOA - サービス利用者/提供者がコミュニケーションをとるためのソリューション。 (私が理解している限りでは、これは他のすべてのものに対する包括的な用語です)

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

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

REST - 機能的にはSOAPに似ているがXMLを避けているデザインパターン? (本当にこれについてはよく分からない)

JSON - JavaScriptを使用するXMLに代わるもの? (これもわからない)

インターネットを見回すと、これらすべてが何であるか、またそれらがどのように相互に関連しているのかについて明確な定義はないようです。

154
Jay

Webアプリケーションを開発していて、アプリケーションの表示から機能を切り離すことにしたと想像してみてください。

あなたはAPIを作成し、他の人たちにもそれ自身のフロントエンドを実装させることができます。ここで行ったのは、 SOA 方法論、つまりWebサービスを使用する方法です。

Webサービスは、プラットフォームやプログラミング言語に関係なく、標準的なインターネットプロトコルを介して機能的な構成要素にアクセス可能にします。

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


ここにSOAPとRESTが入ってきます。これらはWebサービスとのやり取りの標準的な方法です。

SOAP:

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

REST:

RESTはデザインコンセプトです。

World Wide Webは、RESTアーキテクチャスタイルに準拠したシステムの最大の実装です。

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

FlickrのREST AP​​Iはさらに進んでおり、画像を返すこともできます。


JSONXMLは、機能的に同等であり、共通です。選択肢。 ProtobufsベースのGRPC、およびAPIプロデューサとコンシューマ間の通信に使用できるApache ThriftなどのRPCベースのフレームワークもあります。 Web APIで使用される最も一般的な形式はJSONです。これは、どの言語でも使用および解析が簡単だからです。

248