【发布时间】:2013-12-08 01:34:54
【问题描述】:
如果我有一个具有 5 层架构的 C# 应用程序,就像这里介绍的 http://msdn.microsoft.com/en-us/library/ee658109.aspx,并且我采用严格的交互方法,允许一个层只与下面的层交互,我会遇到麻烦在我的数据层中获取数据并将该数据传回我的业务层。
例如,如果我的业务层中定义了一个名为 MyObject 的业务对象,但构建 MyObject 类型的对象所需的信息是从数据层的数据库中检索到的,那么我的业务层需要引用我的数据层为了与数据库进行交互。但是,我的数据层还需要对业务层的引用,因为这是 MyObject 定义所在的位置,并且数据层需要从数据库结果构造该类型的对象并将该数据返回给业务层。现在我们在业务层和数据层之间有了循环依赖。
我想知道解决这个问题的正确方法是什么。
我曾考虑使用在我的数据层中定义的 DTO 对象将信息传递回业务层。这会起作用,因为业务层能够与数据层交互,但反之则不行。看起来这可能是大量重复代码,以基本上模仿数据层中的业务对象定义。
我还考虑为我的所有业务对象创建接口,并将这些接口放入一个单独的项目中,业务层和数据层都可以与之交互。这样,我可以传递接口的实例,业务层和数据层之间唯一的共同引用是定义接口的项目。我也没有看到很多这样的实现。
我想知道其他人做了什么来解决这个问题。
【问题讨论】:
-
显示您的代码并说明您遇到错误的地方。如果可能,请提供您的异常详细信息以及它来自哪一行
-
嗯,这不完全是编码问题,而是设计/架构问题。我没有具体的例外,因为它更多的是关于如何解决循环项目依赖问题的技术问题。
标签: c#