首先,请务必将您的 ASP.NET Web API 逻辑放入一个单独的项目中。这将为您提供托管层的灵活性(因为 ASP.NET Web API 是托管不可知论者),它只会使整个项目变得干净。假设您的项目名称是 MyProject。您可以将 API 项目命名为,MyProject.API
并且可以将Microsoft.AspNet.WebApi.Core
NuGet 包安装到此项目中。
我还建议您也分离您的域层(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 下托管这个项目,你可以通过 Empty Web Application 模板创建一个新项目,我们称之为这个项目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
从这个项目中引用该项目,以便您可以反序列化为强类型对象并从强类型对象中序列化。
这是我一直在使用的项目的解决方案资源管理器的屏幕截图:
希望这能给你一些想法。