新しいASP.NET WebAPI(DbDataController)のEntity Frameworkデータのデフォルトのコントローラ/プロバイダが厳密にはRESTベースのサービスではなく、RPCスタイルのサービスに似ているというコメントを、 。私は、WebAPIフレームワークがあらゆる種類のHTTPサービス、RESTなどを作ることを許していると理解していますが、本当のRESTサービスではないDbDataControllerによって公開されたサービスについて具体的に説明できますか?DbDataProviderをRESTfulにしないものは何ですか?
答えて
設計が自由に個々のコンポーネントの実装を残しながら、RESTアーキテクチャ・スタイルは、建築に適用される次の6つの制約について説明します。
クライアントサーバー
統一されたインタフェースは、クライアントを分離サーバーから。このような分離は、サーバが内部にあるデータである のストレージには関係しないため、クライアントコードの移植性が向上することを意味します。 は、サーバーはユーザーインターフェイスまたはユーザーの状態が に関係しないため、サーバーはよりシンプルになり、 のスケーラビリティが向上します。サーバーとクライアントは、それらの間のインターフェイスが変更されていない限り、個別に交換して を開発することもできます。
ステートレス
クライアント - サーバ通信は、さらに、要求間サーバー上に格納されないクライアント 文脈によって制約されます。 からの各要求には、 要求を処理するために必要なすべての情報が含まれており、セッション状態はすべてクライアントに保持されます。サーバは でステートフルにすることができます。この制約は単に、サーバー側の状態がリソースとしてURLによってアドレス可能な であることを要求します。これにより、監視のためにサーバをより多くの人々に見せてくれるだけでなく、ネットワークの部分的な障害である の信頼性を高めるとともに、スケーラビリティをさらに向上させることができます。キャッシュ可能な
World Wide Web上のとおり、クライアントが応答をキャッシュすることができます。応答は、 を暗黙的にまたは明示的にキャッシュ可能と定義する必要があります。 クライアントは、それ以降の要求に応じて古くなったデータや不適切なデータを再利用しません。部分的によく管理されたキャッシュまたは は、クライアントとサーバー間のやりとりを完全に排除し、さらに スケーラビリティとパフォーマンスを向上させます。クライアントは通常、それは エンドサーバへ、または途中の仲介に直接接続されているかどうかはわかりません
レイヤードシステム
。中間の サーバーは、ロードバランシングを有効にしてシステムのスケーラビリティを向上させ、共有キャッシュを提供することによって を向上させることができます。また、セキュリティポリシーを実施することもあります。
コードオンデマンド(オプション)
サーバが実行可能なコードの転送によるクライアントの機能 を拡張またはカスタマイズすることが一時的に可能です。この例には、Javaアプレットなどのコンパイル済みコンポーネントや、JavaScriptなどのクライアント側の スクリプトが含まれています( )。
統一インターフェース
均一以下に説明クライアントとサーバとの間の界面、 簡素化され、独立 進化する各パーツを可能アーキテクチャを切り離します。このインタフェースの4つの基本原理は、以下に詳述されています。
http://en.wikipedia.org/wiki/Representational_state_transfer#Constraints
「RESTアーキテクチャの唯一のオプションの制約は、オンデマンドでのコードです。サービスは、他の制約に違反した場合、それは厳密にRESTfulなと考えることはできません。DbDataControllerクラスはHTTPサービスとしてEntity Frameworkのモデルを公開します。これらのCRUDサポート、メタデータ、リクエストバッチ処理などのWCF Data Servicesとの重複機能があり、ODataのクエリ文字列フォーマットを部分的に模倣しています。これらのサービスはRESTfulではなく、ODataを使用しないRPCスタイルに従います。 "このサイトからqouteは:
- 1. RESTfulスタイルのリソースとは何ですか?
- 2. RESTfulアプリの正しい長さは何ですか?
- 3. RESTful WebサービスでPUTメソッド等価が意味するものは何ですか?
- 4. RESTful JavaScript APIは何ですか?
- 5. RESTful Webアプリケーションとは何ですか?
- 6. 何もしない最もエレガントなラムダ式(アクション)は何ですか?
- 7. 通常のWCFサービスよりもRESTful WCFサービスの利点は何ですか
- 8. XPathで何も選択しないのはなぜですか?
- 9. 私のWordpressウェブサイトは何時でも何も表示しない
- 10. ontouchは何もしませんAction_upで何もしない
- 11. javascriptのaddEventListenerが何もしないのはなぜですか?
- 12. なぜDerelictGL3は何も描画しないのですか?
- 13. sprintf()が何も出力しないのはなぜですか?
- 14. console.log()が何も印刷しないのはなぜですか?
- 15. Restful WebサービスとWSDLの違いは何ですか?
- 16. cURL + HTTPとRESTful Webサービスの違いは何ですか?
- 17. AJAX、RESTful/Rest、JSON、JSONPの違いは何ですか?
- 18. 何もしないのに時間がかかるのはなぜですか?
- 19. 「ネイティブ」とは何か、ネイティブプロジェクトにはないものは何ですか?
- 20. .NETでRESTfulなサービス "クライアント"を書く最も良い方法は?
- 21. JPAリポジトリを使用してオブジェクトを何度も何度も何度も上書きし、詳細をデータベースに保存できないのはなぜですか?
- 22. ModeShapeはJackRabbitが提供しないものは何ですか?
- 23. もパフォーマンステスト.NET RESTfulなWCFサービス
- 24. 変数が何もない場合のテストは何ですか?
- 25. 私のソケットは何もしないのですか?
- 26. は、RESTfulな方法RESTfulな方法で、リソースの名前を変更するためのベストプラクティスは何
- 27. 関数の場合 - 何もしない場合は何もしない
- 28. シンボルを何も定義しない#イディオムの名前は何ですか?
- 29. 誰でもFreeSWITCH用のRESTful APIを知っていますか?
- 30. vimは何もしない動きをしていますか?
役立ちますが、この答えはDbDataControllerによって破られ、または特にその制約に違反している理由をどの制約指していません。また、RPCスタイルのサービスとは何ですか? –
RPCはクライアントから開始され、既知のリモートサーバーに要求メッセージを送信して、指定されたパラメータを指定したプロシージャを実行します。リモートサーバーはクライアントに応答を送信し、アプリケーションはその処理を継続します。これは、DBDataControlが任意のリレーショナルデータベースからデータを取得および編集するための高速で効率的な方法を提供するのと同じです。つまり、RPCスタイルのサービスのようなものです。 –
この定義では、サーバー側が対応するプロシージャー呼び出しで各種類のREST要求を実装した場合、ALL RESTサービスをRPCサービスと呼ぶこともできます。 「純粋な」REST APIとDbDataControllerとの間に実質的な違いがありますか、このRPCコンセプトを完全に理解していませんか? –