WEB API和BL关系

时间:2018-12-14 14:42:21

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

我的项目结构是客户端<=> Web API <=> BL <=> DAL(存储库)<=> DB。

一个API会知道许多BL有意义吗?意味着在一个API方法中它将调用X_BL,而在另一个方法中,将在同一API类中调用Y_BL?如果可以的话,请您举个例子吗?

还是总是应该为1:1关系,以便每个API控制器都将调用其BL,例如:CustomersAPI将始终调用CustomerBL,ProductsAPI将始终调用ProductsBL。

2 个答案:

答案 0 :(得分:2)

我认为答案是取决于,有很多问题需要首先回答

  1. 您为API做些什么?
  2. 您是否必须遵循API用户(例如MobileApp,WebApp)拥有的架构设计模式?
  3. 还是只想制作一个仅提供数据(如您所说的1:1关系)的API,那么另一个应用程序必须遵循您所做的架构设计模式?
  4. 您专注于处理数据的方面是客户端还是服务器端?
  5. API及其用户的工作范围有哪些限制?

以我的经验,如果您想制作一个可扩展的REST API ,则您的控制器必须能够访问任何BLL (业务逻辑层)在需要时。 BLL = BL(在您的情况下)

例如:

http://localhost/customers/15

客户控制器仅需要1个BLL(CustomerBLL)即可找到ID为15的客户,然后返回结果。就像您所说的1:1关系。

在另一种情况下,您需要超过1个BLL。

例如:

http://localhost/customers/15/products

客户控制者需要另一个BLL(ProductsBLL)来查找与ID为15的客户相关的任何产品,然后返回结果。

答案 1 :(得分:1)

这绝对有道理,API通常需要多个业务逻辑来解决特定问题。例如,您的CustomersAPI可以与CustomersBL对话,但也可以与UsersBL对话以获取授权上下文(可以返回客户),或者在执行操作时与CRM BL对话。