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

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