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


80

RPCとWebサービスの明確な定義はありますか?ウィキペディアをすばやく検索すると、次のことがわかります。

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

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

2つのことの本当の違いが何であるかはよくわかりません。1つはRPCに属している可能性があり、同時に一種のWebサービスであるようです。

WebサービスはRPCのより高いレベルの表現ですか?

回答:


60

WebサービスはRPCのより高いレベルの表現ですか?

はい、そうです。Webサービスは、RPCの特定の実装です。最も低いレベルでは、WebサービスはHTTPプロトコルを使用してソケットに接続し、リモートスペースで実行されるペイロードの送信をネゴシエートします(リモートスペースは同じコンピューターにすることができます)。これらのリモート呼び出しの抽象化はすべて、基本的にRPCです。


1
ウェインが書いたものに加えて、Webサービスのさらなる属性:RPCのプラットフォームに依存しない方法を可能にし、発見可能で自己記述的です(Win32 RPCと比較してください)。
アレックス

6
いいえ、それは正しくありません。RPCは、Webサービスのアーキテクチャスタイルです。別の方法はRESTです。参照:ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm
arnumber

@schlamar WebサービスはRPCと関係がありますか?はいの場合、Webサービス環境にクライアントとサーバーのスタブがありますか?
オーバーエクスチェンジ2017

9

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

------------------------------------------------------------------------------
| 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 (Marshalling)  | Fast
------------------------------------------------------------------------------

RPCとWebサービスの説明は、他の人の回答にはっきりと示されているため、ここでは触れませんでした。


4

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


英語を上達させてください。理解できない
MohitShah20年

1

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

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

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

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