开发ASP.NET WEB API服务应用程序

aaq*_*o4u 2 c# asp.net rest web-services asp.net-web-api

我将开发我的第一个ASP.NET WEB Api服务应用程序,但我不太确定如何开始.
如果我的数据库中有20个表,我是否必须创建20个Api控制器?

出于测试目的,我一直在为每个表创建一个api控制器.我不知道它是否是最好的方法,但它有效.我将使用工作单元模式和依赖注入(Unity for webapi).有人有任何想法或建议吗?

先感谢您.

Bis*_*hoy 5

您的服务不应反映您存储数据的方式.事实上,许多人会认为这是一种反模式或不良做法.

现在有两种流行的趋势/模式用于设计API服务层(还有很多其他我不会在这里提到的)

面向服务(SOA)

这将导致您按业务域/功能或类似的方式对服务进行分组.它也将以任务/行动为导向.所以每个服务都包含系统应该执行的操作和任务.

如果我正在开发一个电子商务系统,我会创建这些服务:

  • 安全性(适用于用户,组,注册,登录,丢失密码等)
  • 目录(产品,库存水平,评论等)
  • 订单(新订单,订单状态,取消等)
  • 履行(发货,更新库存等)

资源导向(RESTful)

在此体系结构中,您将设计服务,就好像它们提供对资源组的访问(但不是显式的活动,操作,命令等)

HTTP协议用作通信层,因此每个资源都有其URI/N,并执行HTTP操作来控制此资源(用于查询的GET ,用于插入的POST,用于更新的PUT,DELETE等)

使用上面相同的电子商务案例,这就是它在RESTful服务架构中的外观:

  • 用户(所有CRUD操作)
  • 产品(所有CRUD操作)
  • 产品评论(所有CRUD操作)
  • 订单(所有CRUD操作)

有关RESTful API的更详细示例,请参阅SpreeCommerceShopify以及它们如何构建其API端点.

这种架构最近越来越受欢迎并得到广泛认可,主要是因为它允许后端支持构建多个客户端应用程序(想想Web和移动),但要注意它将迫使您转移大部分系统开发/向客户端编码(在Web应用程序/站点的情况下为HTML/JS)

我还鼓励您阅读有关SOA以及其他设计和架构模式的更多信息.虽然我不推荐特定的阅读材料.

编写API时需要考虑的事项

  • 准确记录您的API.使用直观的工具,如Apiary及其底层技术API Blueprint

  • 为您的API使用自动化测试工具.如果它可以从您的API文档中读取用例并生成基于它们的单元测试(最好是使用API​​ Blueprint技术,无耻插件:用于asp.net的API蓝图主机可以帮助使用它的文档来模拟API)