ASP.NET Web API架构建议/反馈

vik*_*ben 6 asp.net-mvc-4 asp.net-web-api

目前,我面临着构建Web服务的要求,该服务将允许Java客户端通过httprequest检索并触发对我们数据的操作.我们是一个.Net商店,看来最新的解决方案是微软的MVC4 Web API.我已经习惯了你从API中提取数据的标准分层架构,但这将是我的第一个提供数据的Web服务.

从我的学习中我看到的建议如下:

  • 将逻辑和数据访问分离到单独的项目类型类库中.
  • 使用控件访问数据并执行逻辑.
  • 使用模型访问数据并执行逻辑.

我正在寻找具有MVC4 Web API经验的人,他可以通过这种方式阐明构建Web服务的良好实践.

提前致谢.

tug*_*erk 18

首先,将ASP.NET Web API逻辑放入单独的项目中.这将为您提供托管层的灵活性(因为ASP.NET Web API托管不可知),它只是使整个项目变得干净.假设您的项目名称是MyProject.您可以将API项目命名为,MyProject.API并且可以将Microsoft.AspNet.WebApi.CoreNuGet包安装到此项目中.

我还建议您将域层分开(POCO实体,存储库,服务层片段等).我们称之为MyProject.Domain.然后,您将从MyProject.Domain项目中引用此MyProject.API项目.

我不建议您将所有POCO实体转储到API中.所以,我肯定会使用数据传输对象(Dto).您可以使用autoMapper等第三方工具将实体类映射到Dtos.但是,请将您的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.ModelMyProject.Domain项目.该项目是您应该部署到服务器的项目.

如果要为HTTP API创建.NET包装器,可以创建另一个名为" MyProject.API.Clientinstall Microsoft.AspNet.WebApi.Clientpackage"的项目并将其安装到此API中.您还可以MyProject.API.Model从此引用该项目,以便您可以从强类型对象反序列化和序列化.

以下是我一直在使用的项目的解决方案资源管理器的屏幕截图:

在此输入图像描述

希望这会给你一点想法.

  • : - \这真的开始听起来像https://github.com/EnterpriseQualityCoding/FizzBu​​zzEnterpriseEdition (5认同)