SOAPは何のために発明されたのですか?


8

この質問はこれに触発されました。SOAPを発明する最初の目標は何でしたか?古い種類のHTTPとRESTがあったときになぜ発明されたのですか?



@ギルバート-質問はすでにインスピレーションとしてそれを言及しています。私の見解では、これは実用的ではなく、より哲学的です。代わりに、私が選択すべき発明につながったもの。
sdg

2
食器洗い?<G>
Loren Pechtel、2011年

2
どこかのコンサルタントが、高速で応答性の高いエンタープライズ情報システムを使用し、収益が蒸発するのを見て、管理に推奨するために、オーバーヘッドが非常に遅い標準を発明しました。彼らが言ったXMLがあります!XMLは適切で、エンタープライズです!永久的な開発者は抵抗する力がありませんでした。現在、コンサルタントは、氷河のようなESBのパフォーマンスを微調整する無限の収益源を手に入れており、世界は再び正直です。
2011年

回答:


8

RESTは標準ではなく、(大まかに定義された)アーキテクチャです。そしてそれはHTTPに結びついており、企業の世界の多くの人々はこれを制限と見なしていました。そのため、他の転送レイヤーでも機能する一般的な標準プロパティが必要だと考えました。

そしてbtw SOAPRESTの前に定義されました(少なくともWikipediaによれば:-)


SOAPが発明される前に、多くのRESTfulなものが確実に使用されていました。全体的に、GETおよびPOSTと呼ばれていました。
ワイアットバーネット

4

SOAPは、プレーンなHTTPよりも複雑なデータ構造の交換に適しています。RESTは設計上、実質的にCRUD操作に制限されていますが、SOAPは任意のメソッド呼び出しを許可しますが、これはRESTスキームに押し込むことができない場合があります。


4
RESTは、実用的または理論的にはCRUDに限定されていません。たとえばHATEOASは、発見可能な相互作用/表現を中心に展開しています-infoq.com/articles/webber-rest-workflow
FinnNk、2011年

1
FinnNK:まだ納得できません...もちろん、GETまたはPUTは何でも可能ですが、すべてのケースで非常にRESTyであるとは思いません。たとえば、レコードのリストを受け取り、それらをデータベース内の既存のレコードとマージし(新しいレコードを挿入して既存のレコードを更新するが、何も削除しない)、最新ではなかったすべてのレコードのリストを返すWebサービスを想像してください。そのRESTfullを作成する方法?
user281377

RESTリソースは、「名詞」リソースと同じくらい「処理」リソースにすることができます。ここで、更新と何らかのIDを受け入れるエンドポイントを公開します。次に、そのIDを使用してクエリを実行し、最新でないレコードを取得できます(そのクエリの場所自体はリンクを介して検出できる場合があります)。つまり、バッチ更新はSOAPの古典的なシナリオの1つです。私の考えでは、最も適切なものを使用してください。
FinnNk、2011年

@ammoQ:レコードリストのPOSTを使用してサービスを実行する1つの方法。戻り時に、とりわけ、古くなったレコードをリストするGETへのURLを持つことができます。
sdg '10

4

ウィキペディアから:

SOAPは、当初はSimple Object Access Protocolとして定義されていましたが、コンピュータネットワークでのWebサービスの実装において構造化された情報を交換するためのプロトコル仕様です。... SOAPには3つの主要な特徴があります。拡張性(セキュリティとWS-ルーティングは開発中の拡張機能の1つです)、中立性(SOAPはHTTP、SMTP、さらにはTCPなどのトランスポートプロトコルで使用できます)、および独立性(SOAPでは任意のプログラミングモデル)。

SOAPはHTTPに限定されず、すぐに使用できるセキュリティを提供します。

HTTPを使用していて、セキュリティが必要ない場合(Webサービスが公開されている場合)、SOAPは必要ありません。


4

私は部屋にいませんでしたが、90年代半ばから後半に存在した他のRPCオプションに対するSOAPは非常に優れたアイデアであり、非常に合理的な対応でした。CORBAのように、私が個人的に対処しなければならなかったとは言えない獣ですが、単に言及しただけで、成長した男性が自分自身を汚してしまう可能性があります。多くの場合、CORBA以外のオプションはより恐ろしいものであり、標準化はほとんど行われず、多くのカスタムメッセージングプロトコルが実行されていました。統合システムは非常に大変なものでした。トランスポートとしてHTTPに依存しない正当な理由がありました。90年代後半、一般的なLAN速度は10メガビット以下でしたが、WAN速度はしばしばボーで測定されました。RESTに多くの機能を果たすエッジキャッシングインフラストラクチャ全体は存在しませんでした。

これでSOAPが実現します-それ自体はトランスポートメディアを指定していません。誰かがなんとかして鳩を介してSOAPコールを実装できたと思います。または、おそらくアフリカのツバメ。いずれにせよ、メッセージングオプションの実装は、以前よりもはるかに簡単です。まともなSOAPツールキットがあれば、これまでにない他のどのツールよりもはるかに簡単に使用できます。そして、ツールを簡単に作成できます。非常に簡単なので、プロトコルを拡張する必要があると考えました。そして、そこがWS- *の出番です。車輪がそのトラックから落ちたところです。。。


+1。SOAPをその起源と結びつける唯一の答えは、分散コンピューティングです。SOAPは、HTTPに関するものではなく、アプリケーション間の対話に関するものではなく、CORBAのようなが失敗したものです!
Dipan Mehta 2012

2

SOAPは、他のメッセージングプロトコルが作成されたのと同じ理由で作成されたメッセージングプロトコルです。オブジェクト情報の受け渡し方法を標準化します。ウィキペディアのページに記載されているように、このページはMicrosoftで作成されたものであり、現在はW3Cによって維持されているオープンスタンダードです。

より良い質問は、なぜSOAPかXML風味のスキームかJSONか何を選択するかであり、答えは特定の状況で最も簡単/最も実用的なものを使用することになります。


1

私の意見では、SOAPはRPCの別の見方です。最近、WebServiceをどのように公開しているのか見てみましょう。一方がWebServiceとしてメソッドをマークし、もう一方がWSDLをフェッチして、ローカルであるかのようにリモートメソッドを使用します。私はすべてのSOAP問題をかなり認識していますが、ある程度の抽象化では、SOAP / WSはRPCの約束を果たします。もちろん、RESTアーキテクチャーに基づくAPIを思い付くことができますが、RPC定義に何らかの形で反抗するいくつかのビットをコーディングする他の当事者が依然として必要です。

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