如果我从控制器中取出逻辑,是否需要业务逻辑层?

Is a business logic layer necessary if I take logic out of the controllers?

我正在处理一个 API 项目,其中一些端点在控制器的操作方法中有很多业务逻辑。许多文献建议我将此业务逻辑提取到一个完全不同的项目中,并让 API 项目引用它。我的问题是我真的需要一个单独的 domain/business 逻辑层吗?似乎我可以将业务逻辑提取到 API 层中它自己的 类 中,这将完成同样的事情。感谢您的见解!

domain/business 层有一个单独的项目有一些优势。

  1. 其他层也可以使用您创建的 domain/business 类 而无需知道 about/reference API 层及其依赖项。

假设您的 API 层使用 AbcCalculator(您已在 API 层中定义)。如果您想在数据访问层中使用 AbcCalculator,那么您必须引用 API 层。然后你不能从你的 API 层引用你的数据访问层,因为它是一个循环依赖。

  1. 当您为 domain/business 层编写测试时,您的测试项目将不需要引用 API 项目及其依赖项。

  2. 一个单独的项目意味着开发人员不会意外引用真正属于 API 层、domain/business 层的对象。这会导致以后难以分离层,因为最终会出现循环依赖关系。