6

現在、Java クライアントが httprequest を介してデータに対するアクションを取得およびトリガーできるようにする Web サービスを構築するという要件に直面しています。これに対する最新のソリューションは Microsoft の MVC4 Web API のようです。私はあなたの標準的な階層型アーキテクチャに慣れており、API からデータを取得しましたが、これがデータを提供する最初の Web サービスになります。

私の研究から、次のような提案が見られました。

  • ロジックとデータ アクセスを別のプロジェクト タイプ クラス ライブラリに分離します。
  • コントロールを使用してデータにアクセスし、ロジックを実行します。
  • モデルを使用してデータにアクセスし、ロジックを実行します。

MVC4 Web API の経験があり、この方法で Web サービスを構築するための優れたプラクティスに光を当てることができる人を探しています。

前もって感謝します。

4

1 に答える 1

19

まず、ASP.NET Web API ロジックを別のプロジェクトに配置します。これにより、ホスティング層に柔軟性がもたらされ (ASP.NET Web API はホスティングに依存しないため)、プロジェクト全体がクリーンになります。プロジェクトの名前を MyProject としましょう。API プロジェクトに という名前を付けて、 NuGet パッケージをこのプロジェクトにMyProject.APIインストールできます。Microsoft.AspNet.WebApi.Core

また、ドメイン層も分離することをお勧めします (POCO エンティティ、リポジトリ、サービス層の一部など)。これを と呼びましょうMyProject.Domain。次に、このMyProject.Domainプロジェクトをプロジェクトから参照しMyProject.APIます。

すべての POCO エンティティを API にダンプすることはお勧めしません。したがって、私は間違いなくデータ転送オブジェクト (Dto) を使用します。autoMapper などのサードパーティ ツールを使用して、エンティティ クラスを Dto にマップできます。ただし、Dtos、リクエスト コマンド、リクエスト モデルは別のプロジェクトに配置してください。MyProject.API.Modelプロジェクトからプロジェクトを参照しMyProject.APIます。このために別のプロジェクトを作成するのはなぜですか? 後で HTTP API 用の .NET クライアント ラッパーを作成することにした場合、このプロジェクトを簡単に参照して、.NET クライアントでも使用できるからです。このプロジェクトを としましょうMyProject.API.Model

最後に、API のホスティング レイヤーが必要です。このプロジェクトを ASP.NET でホストする場合、空の Web アプリケーション テンプレートを使用して新しいプロジェクトを作成し、このプロジェクトを と呼びましょうMyProject.API.WebHost。その後、Microsoft.AspNet.WebApiパッケージをこのプロジェクトにインストールできます。このプロジェクトからMyProject.API、 、MyProject.API.ModelおよびMyProject.Domainプロジェクトを参照します。このプロジェクトは、サーバーにデプロイする必要があるプロジェクトです。

HTTP API 用の .NET ラッパーを作成する場合は、別のプロジェクトを作成し、このプロジェクトにパッケージをMyProject.API.Clientインストールできます。Microsoft.AspNet.WebApi.Clientまた、このプロジェクトからプロジェクトを参照して、MyProject.API.Model厳密に型指定されたオブジェクトに逆シリアル化し、そこからシリアル化できるようにします。

これは、私が取り組んできたプロジェクトのソリューション エクスプローラーのスクリーンショットです。

ここに画像の説明を入力

これがあなたに少しのアイデアを与えることを願っています。

于 2012-11-08T09:02:25.767 に答える