まず、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
厳密に型指定されたオブジェクトに逆シリアル化し、そこからシリアル化できるようにします。
これは、私が取り組んできたプロジェクトのソリューション エクスプローラーのスクリーンショットです。

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