6

WebApi と OData をテスト ベッド アプリケーションに統合し始めています。シンプルに保ち、1 つのドメイン エンティティである Customer に固執しましょう。明らかに、MVC コントローラーを使用します。検索すると、(Lucene インデックスに基づいて) 独自のビュー モデルが取得されるため、現在は ODataController という別のコントローラーになります。ただし、ビュー/編集ページには独自のビュー モデルがあるため、独自のコントローラーになります。これはやり過ぎのように感じ始めます。

これを機能させ、エンティティを表す URL のアイデアを引き続き使用するための優れた設計を見つけようとしています。URL のエンティティは Customer である必要がありますが、URL パラメータに基づいて異なる表現を提供する必要がありますか? それとも、Customer/CustomerSearch/CustomerEdit を別のエンティティにする必要がありますか (正しくないように聞こえます)。

4

1 に答える 1

0

この WebAPI アプリケーションは、作成する ASP.NET MVC ソリューションとは別のソリューションになると思います。簡単に言えば、WebAPI はビジネス/ドメイン レイヤーになり、MVC はプレゼンテーション レイヤーになります。

したがって、WebAPI ソリューションについて言えば、ApiController上記の Customer の例に必要なのは 1 つだけです。ビュー/編集リクエストには、独自のビュー モデルがある場合とない場合があります。ビュー モデルをどのように作成するかによって、顧客用の単一のビュー モデルを持つことも、ベース ビュー モデルが検索関連のデータを保持し、子孫ビュー モデルが詳細を具体化する顧客ビュー階層を開発することもできます。 .

ルーティング リクエストは次のようになります。

GET - /Customer/                  retrieve multiple customers 
                                  (supplying OData parameters in query string)
GET - /Customer/{id}              retrieve a single customer
PUT - /Customer/{id}              edit customer

必要になるのはApiController、Customer 用の 2 つのルートと、説明した内容に対する 3 つのリクエスト メソッドです。ApiController機能はエンティティに依存するため、ODataの分離はお勧めしません。

于 2013-03-18T00:42:12.370 に答える