繁体   English   中英

我需要分开业务对象和业务逻辑吗? C#中具有存储库模式的Asp.net MVC

[英]Do I need to Separate Business Objects and Business Logic? Asp.net MVC with Repository Pattern in C#

我很难找到答案。 基本上,现在我有以下几层:

  • 数据访问层(我的存储库所在的位置)。 它具有命名空间Hello.Data
  • 业务层(我的业务对象所在的位置)。 它具有命名空间Hello.Business

我的存储库将返回业务对象。 例如,GetCustomer将返回客户。

但是,在我的业务层中,我还想添加将使用存储库添加/更新/删除记录的逻辑,以便可以在MVC控制器中重用这些方法。 但是,这不起作用,因为我无法让我的数据访问层引用我的业务层,也无法让我的业务层引用我的数据访问层。 (它创建了不允许的循环引用)。

你们认为什么是最好的解决方案? 我应该将业务逻辑放入自己的项目中吗?

所以代替:

Hello.Data
Hello.Business

我将有:

Hello.Data
Hello.Business
Hello.BusinessLogic

还是我在想这一切错了? 谢谢!

您为什么要将业务逻辑与业务模型分开? 逻辑应该模型中。

除了可能的小型通用实用程序库之外,业务逻辑层也不必引用任何内容。 基本上,它应该不依赖于基础结构问题(例如应用程序技术,数据库技术等)。 它应该包含业务逻辑。

所有其他层都应引用业务逻辑层。

但是,这不起作用,因为我无法让我的数据访问层引用我的业务层,也无法让我的业务层引用我的数据访问层。

正确! 本设计中的错误是把商业逻辑层引用了数据访问层 不应该这样

,然而,包含用于由所述数据访问层实现的数据访问(和其他基础设施问题) 接口 业务逻辑层只需要了解接口,就不知道或不在乎什么实现了这些接口。

然后将使用依赖项注入容器将实现连接到接口。

  • 应用程序层引用依赖项注入层以对其进行初始化,并将容器(其本身实现通用业务逻辑接口)传递给业务逻辑层。
  • 依赖项注入层引用业务逻辑层以了解接口,并引用数据访问(和其他基础结构)层以了解实现。
  • 数据访问(和其他基础结构)层引用业务逻辑层以了解要实现的接口。
  • 业务逻辑层不引用任何内容。 它需要配置的依赖项注入容器,并使用该容器获取接口的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM