39

私は自分の Ajax Web サイトを構築しており、RESTと RPC の間で検討しています。

サーバーがサーブレットをサポートしている場合は、インストールして問題を解決しますが、サーバーはサーブレットをサポートしていません。

RPC はコーディングが簡単で (IMO)、PHP で簡単に記述できます。必要なのは、データベース クエリ実行プログラムだけです。Dojo Toolkitと JSONを使用しています。

REST over RPC または RPC over REST を選択する必要があるのはなぜですか?

4

3 に答える 3

56

これを理解するには、Roy T. Fielding の論文、または純粋な REST アーキテクチャと単純な RPC アーキテクチャの違いについて説明している彼のブログの関連記事を読むことをお勧めします。

もう 1 つ注意すべき点は、REST に関するウィキペディアの記事が悲惨な状態にあり、REST の「発明者」であるフィールディング自身が記事が不正確であることを示唆していることです。

REST に関して人々が見逃している最大のことは、見つけやすさです。リソースは、帯域外で標準化されていない URI 命名規則に依存するのではなく、ハイパーテキスト内に他の関連リソースの URI を含める必要があります。

SOAP や XML-RPC などの一般的な RPC 実装の大きな問題は、PUT、GET、DELETE などの HTTP のさまざまなプロパティをすべて利用するのではなく、独自のアーキテクチャの下で HTTP を使用することです。従来の Web スタックも同様です。たとえば、RPC 呼び出しの内容の意味を知らなければ、中間のキャッシュ サーバーは機能しません。

これは REST と RPC の不完全な紹介ですが、見過ごされがちな重要なポイントのいくつかを強調したと思います。REST には間違った情報がたくさんあるので注意してください。

とは言っても、REST は万能ではありません。これはアーキテクチャなので、実装方法はかなり柔軟です。しかし、主にリソースとしてアクセスすることが理にかなっていない場合、REST は適していないか、アプリケーションの一部にしか適していない可能性がありますが、それは問題ありません。

于 2009-07-17T21:08:25.033 に答える
29

ええと...簡単に言えば、どちらも非常に抽象的なモデルです...とても抽象的なので、自然にどこでも発生します...

RESTは、 CRUDの方法でアクセスされるグローバル識別子(HTTPの場合はURI)でアドレス指定されたリソースを持つという考えです(HTTPの場合はPOSTGET、PUT、およびDELETEを使用します...少なくともそれはアイデア)...

RPCは、別のマシンでプロシージャを呼び出し、いくつかのパラメータを渡して、戻り値を取得するという考え方です...

ウィキペディアに素敵な短い比較があります

Persevereは、両方を可能にするサービスを作成します(非常にエレガントな方法で、確かに)...それはRESTfulであり(これを達成するためにHTTP機能を使用するだけではありませんが)、RPCインターフェイスを公開します...

最後に、アプリケーションが何をする必要があるかを確認する必要があります...ほとんどの人は、おそらくRPC API(XMLJSONなどに基づくもの)を使用することになります。これには、部分的にRESTfulサブシステム...これは、RESTfulnesがあるため、柔軟性を意味するためです...クライアントがサーバー上のデータを多かれ少なかれ自由にトラバースできる場合(一連の単純なCRUDメソッドを介して)、制限に依存しません(問題固有の)APIを介して公開される一連のメソッドであり、ロジックをクライアントにシフトできます...

于 2009-07-08T17:42:25.167 に答える
6

サービスには 3 つの異なるスタイルがあります。

  • RPC API - クライアントはプロシージャとパラメータをサービスに送信し、サービスはコマンドの実行と結果の返しを担当します。
  • メッセージ API (ドキュメント API) - クライアントは DOM (要素) を送信します。DOM (要素) は通常、操作を直接意味しない傾向があるため、RPC API 呼び出しよりも複雑な構造です。
  • リソース API - リソース (データベース タプル、ファイル、画像など) にアクセスするために使用されます。一般に、適切なメディア タイプ ネゴシエーションも提供する必要があります。

SOAP と REST はW3Cの標準をコンパイルしたものです。主な違いは、SOAP はトランスポート プロトコルとして HTTP、SMTP などを使用し、REST はそれをアプリケーション プロトコルとして使用することです。別名、サポートする必要があります (GET、PUT、PUSH、DELETE、および POST)。 )。SOAP は XML を使用することも意味し、REST は任意のデータ型 (JSON、XML、HTTP など) を使用できます。さらに、SOAP の主な利点の 1 つは、クライアントにサービス コネクタ (プロキシ) を自動生成できるサービス記述子 (WSDL ファイル) です。

特効薬はありません。Web サービスのタイプとアーキテクチャは、実際のクライアントとテクノロジの要件によって異なります。

この件に関する一般的な考え方については、Martin Fowler の署名書籍の 1 つであるService Design Patternsを参照してください。

于 2013-01-25T13:00:05.847 に答える