SOAPの現在の意味は何ですか


51

最後に、SOAPベースのサービスに出くわしたのは、2013年に金融会社でインターンシップを行っていたときです。それが、ITでのキャリアを始めたときでした。私のエンジニアリングコースの1つで、SOAPについての学習資料を持っていたことを覚えています。それ以外では、私はキャリアの中でSOAPをあまり使用していません。

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

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




14
@gnat:それが価値があるのは、これらの質問の両方の答えがすべてひどいことです。
ロバートハーヴェイ

7
実際にRESTサービスを見たことがありますか?私が見るのは、「HTTP動詞の意味を最終的に学習したWebサービス」だけです。なぜHTTP RESTを突然呼び出すのですか?
ルアーン

8
@Luaan:それについて突然何もありません。人々は何年もの間「休息」という言葉を乱用してきました。
モニカとライトネスレース

回答:


58

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

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

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

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

しかし、実際には、RESTとはあまり関係がありません。

さらに読書
良くSOAPよりもREST?(RESTを誤ってプロトコルと呼んでも、良い記事です)。
リチャードソン成熟度モデル


3
JSON Webサービスのキラー機能は、ブラウザーがXMLおよびSOAPのサポートを貧弱にしている一方で、JSONを(ほぼ)ネイティブにサポートしているという事実です。SOAPには多くの機能がありますが、SOAPサービスに対してAJAXリクエストを作成できない場合、それは死んでいます。Javascriptを/ JSONあなたはそれを使用しないように巨大な利益を必要とするだろう、とSOAPではないので、インターネットの最小公分母になったことをずっと良いです。
ルアーン

3
@LuaanブラウザのXMLサポートが不十分だとは思いません。実際、XML HttpRequestを実行し、解析されたDOMを持つ属性にアクセスすることよりも優れていることは困難です。ただ、ドキュメントではなく、典型的なデータ構造が欲しいのであれば、ブラウザでも他の環境でも、JSONがより適しています。
アンドレパラメ

4
必要なのは、JSONまたはXMLを転送するメカニズムだけです。他のすべてのユーザーと互換性がない場合は、その必要さえありません。-1:クライアントとサーバーを接続する場合は、XML、JSONの使用、または他のすべてのユーザーとの互換性について何の関係もないことを双方が理解している任意のプロトコルが必要です。jsonやxmlを使用しても、すべての人または誰かとの互換性を保証するものではありません。Jsonとxmlは単なるデータ形式です。
ポールワシレフスキー

6
@PaulWasilewski:はい、そうです。 言葉にこだわらないでください。誰もがJSONを使用する理由があります。それは標準です。 これを使用すると、他の人が認識できるものを使用していることが保証されます。
ロバートハーベイ

3
@RobertHarvey、いや、あなたが書いたものではないかもしれません。JSONは標準なので、何ですか?CSV、Protcol Buffers、BSONは他の多くと同様に標準化されています。したがって、誰もがJSONを使用している理由は多岐にわたります。誰もがJSONを使用しているため、JSONを使用している人もいます;)
ポール

29

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

SOAPでは、許可される操作のセットと許可されるデータ型のセットは本質的に無限です。SOAPはリモートプロシージャプロトコルであり、これを使用して、忠実度を失うことなくネットワーク全体でローカルAPIを公開します。これにより、複雑なトランザクションシステムが途中で忠実度を失うことなくネットワーク全体でやり取りする必要のあるエンタープライズ環境でSOAPが普及しました。SOAP APIの理解と使用が非常に面倒になるため、物事を理解するためにWSDLおよびSOAPクライアントライブラリの形式で自動化されたツールが必要になるため、この豊富な機能もSOAPの没落です。さらに、基盤となるシステムの完全なリッチさを公開することは、APIを壊したりバージョンアップしたりすることなく基盤となるシステムを進化させる抽象化を提供したい公開APIでは魅力的ではありません。

REST + JSONは、そのシンプルさのために特に人気を博しました。API設計者は、この限られた語彙に収まる抽象化を慎重に設計し、ビジネスドメインからRESTリソースへのマッピングを実際に検討する必要があります。REST APIは、特別なツールを使用しなくても理解しやすく使いやすいです。APIユーザーがすべてのレベルのスキルと知識を持っている一般公開APIの場合、これはまさにあなたが望むものです。だから、Webで見られるすべてのAPIがRESTに移行しているのです。SOAPは、システム間で複雑なAPIを共有したいという要望と必要性がまだある企業の状況に追いやられています。しかしながら、

基本的に、人々が理解しているのは、APIをシンプルかつ抽象化してメンテナンスが容易で使いやすいものにするためにAPIデザインに適用しなければならない制約のセットが、RESTが導入する制約のセットであり、SOAPを効果的に中和することです欠点だけを残して利益をもたらします。SOAPを使用して単純化されたAPIを構築できますが、RESTほど簡単に使用できないため、実際には誰もがRESTを選択するだけです。


4
古き良き静的対動的タイピング論争、いや:Dきちんとしたハード対ハックでシンプルな、終わらない戦争。
ルアーン

@Luaan ...そして、データ交換では常にダイナミック勝ちます。youtube.com/watch?v=ROor6_NGIWU
ジャレッドスミス

6
@JaredSmith私は強く反対します。エラーが発生しやすいドキュメントページの代わりにメタデータの公開を通じてそれを行うことができれば、両方のエンドポイントがデータを正しくマップするように、契約に従うことが想定されています。
drake7707

1
実用的なRESTはプロトコルです。論文と宗教は「建築様式」です。この答えは、実用的な休息と実用的な石鹸を正しく比較しています。
bmargulies

1
あなたの答えは、あなたがRESTを理解していないことをすでに示しており、あなたはそれを強調しています
ポールワシレフスキー

5

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

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

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

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

一方、多くの人々は、W3C Webサービスアーキテクチャの一部であるWSDLおよびSOAPに基づくWebサービスをSOAPと言っていることを意味します[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を使用している将来のシステムも存在します(少なくともエンタープライズシステムでは、ほとんどがドアの向こう側にあります)。しかし、大多数は最近、ある種の「休息」をしようとしています。

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

RESTがデータ転送のためのより柔軟なステートレスアーキテクチャであると言うの良い説明ではありません。単に話されるRESTは、特定の制約と要素を持つアーキテクチャスタイルです。一方、SOAPは情報交換プロトコルです。

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


「しかし、RESTful HTTP WebサービスとSOAP / WSDL Webサービスを比較できます。」しかし、それはOPが求めていることです。誰もまだそれに答えましたか?
RoboJ1M
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.