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

时间:2015-10-11 22:32:52

标签: c# asp.net web-services rest asp.net-web-api

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

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

提前谢谢。

2 个答案:

答案 0 :(得分:5)

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

现在有两种流行趋势/模式用于设计API服务层(以及其他许多我不会在此提及的内容)

Service Oriented (SOA)

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

实施例

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

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

Resource Oriented (RESTful)

在这个架构中,您将设计您的服务,就好像它们提供对资源组的访问(但不是明确的活动,操作,命令等)。

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

实施例

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

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

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

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

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

编写API时需要考虑的事项

  
      
  • 很好地记录您的API。使用直观的工具,例如Apiary及其基础技术API Blueprint

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

    < / LI>   

答案 1 :(得分:0)

  

如果我的数据库中有20个表,我是否必须创建20个Api控制器

没有。您只需要一个控制器来满足它所需的功能。它的存储方式和位置无关紧要。如果您的控制器提供与下订单相关的方法,它通常会与很多表(客户,库存,产品,发票,订单,订单行,运输等)进行交互。