【问题标题】:WEB API & BL relationsWEB API & BL 关系
【发布时间】:2019-05-15 20:21:45
【问题描述】:
我的项目结构是 Client Web API BL DAL (Repository) DB。
一个 API 可以识别多个 BL 是否有意义?这意味着在一个 API 方法中它会调用 X_BL,而在另一种方法中,它会在同一个 API 类中调用 Y_BL?如果有道理,可以举个例子吗?
还是总是应该是 1:1 的关系,这样每个 API 控制器都会调用其 BL,例如:CustomersAPI 将始终调用 CustomersBL,ProductsAPI 将始终调用 ProductsBL。
【问题讨论】:
标签:
c#
rest
asp.net-web-api
architecture
【解决方案1】:
这绝对是有道理的,API 通常需要多个业务逻辑来解决特定问题。例如,您的 CustomersAPI 可能与 CustomersBL 对话,但也与 UsersBL 对话以获取授权上下文(可以返回哪些客户),或在执行操作时与 CRM BL 对话。
【解决方案2】:
在我看来答案是取决于,有很多问题需要先回答
- 您制作 API 的目的是什么?
- 您是否必须遵循 API 用户拥有的架构设计模式(例如 MobileApp、WebApp)?
- 或者只是想像你说的那样做一个只提供数据的 API,1:1 关系,所以其他应用程序必须遵循你做的架构设计模式?
- 您在哪里专注于处理数据,客户端还是服务器端?
- API 及其用户的工作范围有哪些限制?
根据我的经验,如果您想制作一个可扩展的 REST API,您的控制器必须能够访问任何 BLL(业务逻辑层)在需要时。 BLL = BL(在你的情况下)
例如:
http://localhost/customers/15
customers 控制器只需要 1 个 BLL (CustomerBLL) 即可找到 ID 为 15 的客户,然后返回结果。就像你说的,1:1 的关系。
在另一种情况下,您将需要超过 1 个 BLL。
例如:
http://localhost/customers/15/products
客户控制器需要另一个 BLL (ProductsBLL) 来查找与 ID 为 15 的客户相关的任何产品,然后返回结果。