web-dev-qa-db-ja.com

SOAPの今日の重要性は何ですか

最後に、SOAP=ベースのサービスは2013年の金融会社でのインターンシップの最中に出会いました。そのとき、私はITでキャリアを始めました。SOAP私のエンジニアリングコースの1つ。それ以外では、SOAPキャリアの中で多くのことを使用していません。

「SOAPとRESTの違い)」という質問が最近のインタビューの1つで出てきたので、これを尋ねています。知っていること(およびGoogleで見つけたもの)SOAPは、ビジネスロジックに密接に関連する情報交換のためにクライアントとサーバー間を密結合するプロトコルです。一方、RESTは、データ転送のためのより柔軟なステートレスアーキテクチャです。

SOAPとRESTの違いについて間違っている場合、誰かが私を訂正してくれませんか?また、SOAPの現在の重要性は何ですか?人々はまだ新しいSOAPベースのAPIを開発していますか、それとも主に今の遺産?

52
Abhas Tandon

RESTは確かにアーキテクチャスタイルです。 SOAPはデータプロトコルです。区別は重要であり、直接比較することはできません。

RESTの主な目的は、インターネット上の representresources および にメカニズムを提供することですそれらを発見します。 対照的に、SOAPは、コンピューター間で構造化データを通信するために使用されます。

インターネット上の2台のコンピューター間にクライアント/サーバー関係を作成するために、実際にはRESTは必要ありません。必要なのは、JSONまたはXMLを転送するメカニズムだけであり、他の人と互換性がない場合は、それが必要です。

それにもかかわらず、SOAPは、新しい公開APIの支持を失いましたが、「データコントラクト」を定義できるため、B2Bアプリケーションではまだ一般的に使用されています。JSONWebサービスには、どちらかと言えば軽量で柔軟性に優れていること、そしてJavaScriptはJSONをネイティブに認識するため、ブラウザにとっては当然の選択です。

しかし、実際にはRESTとはそれほど関係ありません。

さらに読む
Is REST SOAPより良い? (良い記事ですが、RESTプロトコル)と間違って呼ばれていますが).
リチャードソン成熟モデル

60
Robert Harvey

RESTはSOAPよりはるかに制限されており、SOAPはその強みであり、その人気の理由でもあります。

SOAPでは、許可される操作のセットと許可されるデータ型のセットは基本的に無制限です。 SOAPはリモートプロシージャプロトコルであり、忠実性を失うことなくローカルAPIをネットワーク全体に公開するために使用します。これにより、複雑なトランザクションが必要なエンタープライズ環境でSOAPシステムは、途中で忠実性を失うことなくネットワーク全体で対話する必要がありました。この機能の豊富さは、SOAPの欠点でもあります。これは、SOAP APIを理解して使用するのが非常に面倒なので、自動化ツールが必要になるためです。 WSDLの形式とSOAPクライアントライブラリが意味をなすためのクライアントライブラリです。さらに、基盤となるシステムの豊富さを完全に公開することは、一般向けのAPIでは魅力的ではありません。 APIを壊したりバージョン管理したりせずに、基盤となるシステムを進化させることができます。

REST + JSONは、その単純さのために特に人気を得ました。これは、限られたデータタイプのセットを備えた限られた操作セットを定義します。API設計者は、この限られた語彙に収まる抽象化を慎重に設計し、ビジネスドメインのRESTリソースへのマッピングを熟考する必要があります。 。A REST APIは理解しやすく、特別なツールを使用しなくても簡単に使用できます。APIユーザーがすべてのレベルのスキルと知識を持っている可能性がある一般向けのAPIの場合、これはまさにあなたが望むものです、これが、ウェブ上で目にするすべてのAPIがRESTに移行している理由です。SOAPは、システム間で複雑なAPIを共有したいという要望がまだある企業の状況に追いやられています。ただし、 、独立したバージョンのマイクロサービスに向けたアーキテクチャの傾向があり、そのドメインでさえ、別のチームによって開発されています。

基本的に、人々が認識していることは、APIをシンプルで抽象的で維持しやすく使いやすいものにするためにAPI設計に適用する必要がある一連の制約は、RESTを導入すると、SOAPの利点を効果的に無効にして、SOAPの欠点のみを残すことができます。SOAPを使用して単純化されたAPIを作成することはできますが、RESTほど簡単には使用できないため、実際には全員がRESTを選択するだけです。

29
Joeri Sebrechts

RESTとSOAPを比較することはできません。RESTはアーキテクチャスタイルですが、SOAPはプロトコルです。

残念ながら、RESTは、RESTful HTTPサービスの同義語として口語になりました。つまり、REST HTTPを(アプリケーション)プロトコルとして使用するスタイル付きアーキテクチャ)の実現を意味します。

RESTは次の原則(制約と要素)(括弧内はRESTful HTTPでの実現)に基づいています [1]

  • ステートレス(HTTPはステートレスプロトコルです)
  • リソース(URIで識別)
  • 統一インターフェース(HTTPメソッド)
  • 表現(MIME-TYPE)
  • HATEOS(ハイパーリンク)
  • キャッシュ(HTTPキャッシュ)

反対に、多くの人はSOAP WSDLに基づくWebサービスとSOAPはW3C Webサービスアーキテクチャの一部です [ 2]

  • SOAPは、情報を交換するためのプロトコルとして使用されます(基本的に、メソッド名、パラメーター、戻り値、データ型など)。
  • WSDLは、Webサービスを記述するためのインターフェース定義言語です。

SOAP *の現在の重要性は何ですか?

SOAPはW3C標準であり、W3C Webサービスで情報交換フォーマットとして使用されます。これらのWebサービスは-特に2008年前後(+-3年)のSOA(サービス指向アーキテクチャー)の宣伝の間-であり、(残念ながら)エンタープライズアプリケーションにほとんど実装されています。

これにはいくつかの理由があります。当時、RESTful HTTPはよく知られておらず、誤解されていました。残念ながら、それはまだ誤解されています他の答えを見てください

„ [...] RESTはSOAP [...]よりはるかに制限されています。 "

「RESTの主な目的は、インターネット上のリソースを表すことです[...]。」

さらに、SOAP(およびWSDL)は、Webサービスを実装するためのさらに多くの標準を提供するW3C Webサービスプロトコルスタックの一部です。

人々はまだ新しいSOAPベースのAPIを開発していますか、それとも今ではほとんどがレガシーですか?

したがって、はい、まだあり、将来のシステムでもSOAPを使用しているシステムが存在します(少なくともエンタープライズシステムでは、ほとんどがドアの後ろにあります)。しかし、大多数は最近は「REST」のようなものです。

SOAPとRESTの違いについて私が間違っている場合、誰かが私を訂正してくれますか?

RESTがデータ転送のためのより柔軟なステートレスアーキテクチャであるとは、適切な説明ではありません。 RESTは特定の制約と要素を備えたアーキテクチャスタイルです。一方、SOAPは情報交換プロトコルです。

私がすでに書いたように、それらを比較することはできません。ただし、RESTful HTTP WebサービスとSOAP/WSDL Webサービスを比較できます。

5
Paul Wasilewski