web-dev-qa-db-ja.com

リモートプロシージャコールとWebサービスの違いは何ですか

RPCとWebサービスの明確な定義はありますか?ウィキペディアのクイック検索では次のことが示されます。

RPC:リモートプロシージャコール(RPC)は、プログラマが明示的に詳細をコーディングせずに、コンピュータプログラムが別のアドレススペース(通常は共有ネットワーク上の別のコンピュータ)でサブルーチンまたはプロシージャを実行できるようにするプロセス間通信技術です。このリモート対話。

Webサービス:Webサービスは通常、ハイパーテキスト転送プロトコルを介してアクセスされ、要求されたサービスをホストするリモートシステムで実行されるアプリケーションプログラミングインターフェイス(API)またはWeb APIです。 Webサービスは、Big Web Services [1]とRESTful Web Servicesの2つのキャンプのいずれかに分類される傾向があります。

2つのことの本当の違いははっきりしていません。 1つのことはRPCに属し、同時にWebサービスの一種であるようです。

WebサービスはRPCの上位レベルの表現ですか?

75
xiao 啸

WebサービスはRPCの上位レベルの表現ですか?

はい、そうです。 Webサービスは、RPCの特定の実装です。最下位レベルでは、WebサービスはHTTPプロトコルを使用してソケットに接続し、リモートスペースで実行されるペイロードの送信をネゴシエートします(リモートスペースは同じコンピューターでもかまいません)。これらのリモートコールの抽象化はすべて、その中心部分でRPCです。

54
Wayne Hartman

リモートプロシージャコール(RPC)とWebServiceは、機能のために両方とも並行します。しかし、呼び出し方には微妙な違いがあります。 Webサービスは、HTTPプロトコルを介したXML形式を使用して、その相互運用性を備えた任意のアプリケーションによって呼び出すことができますが、RPCの場合、関数は複数のアプリケーションによって呼び出すことができるため、シリアル化のパスに従ってオブジェクトデータを保存できます。 TCPプロトコルを介してバイナリ形式をサポートします。適切なソケットとメッセージの適切な形式を介して関数を実行しているが、実際の存在を知らないように、提供されたソケットは、関数が存在するサーバーと同じサーバーに存在しない場合もありますが、関数がローカルにあるように感じるたびに、リモートサービスでは、関数はリモートに存在しますマシンと適切な形式とプロトコルで呼び出すことができ、スケーラビリティが可能になります。

5
fak33r

この質問が表示されます。質問はずっと前に聞かれましたが、このコミュニティでの誰かの答えは、このトピックに関するより多くの情報と明確さを与えて、将来の質問者に役立つと思います。そのため、重要な違いを指摘する拡張機能を追加したいと思います。将来の読者に役立つことを願っています。

------------------------------------------------------------------------------
| Category             |    RPC              |    Web Services
------------------------------------------------------------------------------
|Operation's Location  |   On top of TCP     |  on top of HTTP Protocol
------------------------------------------------------------------------------
|Data format           | Binary              | Text, XML, JSON, ect.
------------------------------------------------------------------------------
|Speed                 | Slow (Marshilling)   | Fast
------------------------------------------------------------------------------

RPCとWebサービスの説明は、他の人の答えにはっきりと記載されているため、言及していません。

1
Dosto

•データはXMLを使用して転送用にフォーマットされ、マーシャリング、アンマーシャリング、および開発者が通常コーディングするその他のさまざまな翻訳関連要件を改善または排除します。 •データは、明確に定義された標準を公開しているHTTPやSMTPなどの標準化されたプロトコルを使用して渡されます。 •基礎となる公開サービスは、既知の受け入れられているメカニズムであるWSDLを使用して明確に定義されています。 •サービスは、明確に定義された標準、UDDI、およびより高度なebXMLを使用して検出されます。

具体的には、WSDLは多くの重要な情報を提供します。

•要素と適切なスキーマ定義を使用して、2つのエンドポイント間で渡されるメッセージの形式の定義。 •サービスのセマンティクス:同期要求/応答、同期応答のみ、または非同期通信を行うために呼び出される方法。 •要素を介したサービスのエンドポイントとトランスポート:つまり、サービスを提供するのは誰か。 •要素を介したエンコード、つまりサービスへのアクセス方法。

1
sravan kumar