首先,请将您的ASP.NET Web API逻辑放入一个单独的项目中。这将使您比托管层更灵活(因为ASP.NET Web API托管不可知),它只是使整个项目变得清晰。假设你的项目名称是MyProject。您可以将该API项目命名为MyProject.API
,并且您可以将Microsoft.AspNet.WebApi.Core
NuGet软件包安装到此项目中。
我还建议你分开你的域图层(POCO实体,存储库,你的服务层件等)。我们称之为MyProject.Domain
。然后,您可以参考MyProject.API
项目的MyProject.Domain
项目。
我不会推荐你将所有的POCO实体转储到你的API中。所以,我肯定会使用数据传输对象(Dto)。您可以使用像autoMapper这样的第三方工具将您的实体类映射到您的Dtos。但是,请将您的Dtos,请求命令,请求模型放入单独的项目中。您可以参考MyProject.API
项目MyProject.API.Model
项目。为什么我们为此创建一个单独的项目?因为,稍后如果您决定为您的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
这个项目,这样你就可以反序列化并从强类型对象序列化。
这里是解决方案浏览器,因为我一直在与项目工作的截图:
希望这给你一点想法的。
欢迎来到stackoverflow!我认为这个问题有点含糊。你能解释一下你究竟想做什么吗?例如:“我的Web服务的设计应该是什么?这就是我的想法”?也许......这个问题似乎太开放了。 – Parris
感谢您的回应和欢迎。我担心我的问题的模糊性与我对MVC 4产品的知识相符。我在想两个选择。第一种选择是将我的逻辑和数据访问分离为单独的类库项目,以便重用代码和更好的组织。或者,另一种选择是使用MVC shell,并使用该模型来实现业务逻辑和数据访问,因为这个项目变得越来越大,我觉得可能会变得非常拥挤。 – vikingben
ASP.NET Web API!= ASP.NET MVC http://www.tugberkugurlu.com/archive/newsflash-asp-net-web-api-does-not-sit-on-top-of-asp-net- mvc-in-fact-it-do-not-sit-of-top-of-anything只是FYI :) – tugberk