2017-10-25 23 views
0

実装に関しては、RPCを理解するのが苦労しています。私はRPC上で読んだいくつかの記事、私はRPCに関連する次の例を見てきました:RPC:メソッド呼び出しとAPI呼び出し

例:RPC APIを

GET /readStudent?studentid=123 

例:RPCコール

POST /student HTTP/1.1 
HOST: api.demo.com 
Content-Type: application/json 

{"name": "John Doe"} 

私が読んで理解している限り、RPCを使用すると、クライアントアプリケーションは別のマシン上のサーバーアプリケーション上のメソッドを直接呼び出すことができます。それがローカルオブジェクトの場合はです。

だから、上記の例はすべて何についてですか?メソッドを呼び出す代わりにAPI呼び出しを行うのはなぜですか?

上記のRPCの例では、URLがパブリックメソッドを指していて、メソッドの引数がクエリ文字列または本文に渡されていると想定しています。

その場合、どうして私は単にRESTを使用できないのですか?なぜRPC APIのに従って公開メソッド(の実際の実装が他の場所になければならない)を公開するのはなぜですか?

また、実際のRPC方法と、どちらの方法を優先すべきかについても混乱します。

答えて

0

例では、1つのRPC実装がどのように異なるプロセスに要求を転送するかを示すことができます。しかし、クライアントが単純にreadStudent(123)createStudent("John Doe")のようなメソッド/関数/プロシージャを呼び出すことを可能にするトランスレーションレイヤが存在するはずです。多くの場合、対応するサーバー側レイヤーがあり、アプリケーションコードでこれらのメソッド/関数/プロシージャーだけを実装できます(JSON/HTTPやその他のトランスポートの詳細ではありません)。これらの翻訳(または「マーシャリング」)レイヤーは、アプリケーション固有のインターフェイス仕様から機械で生成されることが多く、翻訳ボイラープレートの手作業によるコーディングを避けるためです。そのようなインターフェース仕様は、インターフェース定義言語(IDL)で書かれている。

RESTは、メソッド呼び出しが敬遠するかもしれないいくつかの従来のセマンティクスを強制します。また、の場合は、にはアプリケーション固有のメソッド呼び出しの錯覚を与える変換レイヤーがありません。

関連する問題