2011-08-08 21 views
2

SOAPを使用してC#で書かれたWebサービスがあります。クライアントは、同じサービスをRESTベースのサービスとして利用できるように要求しました。SOAPからRESTへの変換

私はこれを達成するための巧妙な/速い方法がありますか?または新しいものからの再構築を見ていますか?

+0

これは現在のSOAPインターフェイスの機能に依存します。一部のIDでドキュメントを参照しているだけでは、あまりにも難しくありません。ドキュメントを挿入/変更している場合は、それでも問題はありません...しかし、メッセージではなく文書を中心にしているものなら、あなたは先行する仕事があります。 – Joe

答えて

5

SOAPベースのサービスは、RESTサービスとはまったく異なる一連の制約で構築されています。サービスがシンプルな場合、2つのアプローチの最終結果は多少関連するように見えるかもしれませんが、実際には2つの全く異なるアプローチです。

+0

私はこれが事実だろうと恐ろしい感情を持っていました。 –

3

SOAPとRESTは概念的ではなく機械的に異なっています。

概念的にSOAPメソッドはRPC、リモートプロシージャーです。したがって、あなたのWebメソッドは "GetListOfCustomers"と "DeleteCustomer"のように見えます。 RESTでは、Customersとしてリソースをモデル化し、これらのリソースでHTTP動詞を使用します。クライアントのリストを取得するには、クライアントはHTTP GETを送信し、サーバーはXML、JSON、HTMLまたはカスタム形式の顧客表現を返します。顧客の表現にURLリンクが埋め込まれていると、クライアントコードで顧客を削除することができます。これは、HATEOAS

と呼ばれ、機械的にSOAPはHTTPの上にあるレイヤーです。エンベロープ、動詞、キャッシング、エンコードなどの既存のHTTP機能を無視して再実装するレイヤー。これらすべてのHTTP機能に依存するRESTとは対照的です。したがって、SOAPには追加のレイヤーがないため、機械的にRESTが簡単になります。

既存のSOAPサービスをRESTとして利用可能にするように求められたとき、おそらく純粋に機械的な側面を暗示していました。おそらく、XML RPC over HTTPが必要ですが、SOAP/RPCからREST/HATEOASにAPIを再設計するほど難しくないかもしれません。

+1

詳細な返信に多くの感謝をします。私はいくつかの読書をする必要があると思うし、いくつかの長い夜を期待しています。 –

+0

-1いくつかのSOAP Webサービスは、メッセージでもドキュメントベースでも、RPCではなく、ということを忘れています。あなたはまた、イデオロギーを放棄し、質問に答えることに固執することができます。 –

+1

@ John Saunders:WSDL SOAPバインディングスタイル。これはRPCでもDocumentでもかまいません。プログラミングモデルは、ほとんどの場合RPCです。しかし、あなたのコメントのためにありがとう、それはあなたの答えと同じくらい有用です。 – Dmitry

0

解決方法は、SOAP Webサービスの実装方法によって異なります。

これは「変換」ではありません。 SOAPサービスと同じ種類の処理を行うRESTベースのサービスを作成します。 SOAPサービスを正しく開発した場合、コードの多くを再利用することができます。両方の要件に対応する単一のサービスを展開することができます。

関連する問題