3层架构依赖关系

3

我一直在苦恼如何构建我的三层应用程序。我总是遇到不想要的依赖问题,这是我做错了什么的明显迹象。

你通常如何构建你的三层架构?

我看到有两种方法:

  1. 业务层处于顶部(或底部,取决于您如何看待它),所有其他层都依赖于它。业务层定义了其需要执行工作的接口,特别是数据访问方面的接口。数据访问层实现这些接口,并使用依赖注入将它们注入到中间层中。UI通过依赖注入消耗输出接口。业务对象是数据层填充的POCO。数据层没有自己的代码模型(它使用业务层中定义的业务对象)。业务层对UI层和数据层一无所知,而UI层和数据层则知道业务层。
  2. UI层位于顶部,业务层位于中间,数据层位于底部。数据层发布业务层消耗的接口。业务层具有UI层消耗的接口。这是一种直接的1-2-3情况。数据层定义代码对象,业务层具有自己的模型(并且类似于AutoMapper的东西用于在它们之间进行映射。但是在业务层执行此映射)。数据层对业务或UI层一无所知,业务层了解数据层,但不了解UI层,UI层了解业务层,但不了解数据层。

enter image description here

你使用这两个中的任何一个吗?哪一个?为什么?你使用不同的方法吗?

我认为,#1提供了一种以业务为中心的做事方法。UI可以轻松更改,而不会影响业务层和数据层。

第二种方式更为直接,并且通常需要在数据层更改时更改业务层。当然,您可以使用精心计划的接口抽象化这一点(像Repository模式),但某些地方必须更改。UI可以更改,而不会影响任何一层。


就我个人而言,我认为这两种方法都没有问题;它们都提供了良好的模块化和抽象。个人而言,我使用你描述的第二种方法,因为它对我来说更加直观。 - J. Ed
相关:http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ - Arnis Lapsa
一个很好的三层概念概述:http://www.exforsys.com/tutorials/application-development/what-is-n-tier.html - Jowen
1个回答

0
如果是一个带有少量业务逻辑的CURD应用程序,请使用第二种方法。 否则,请使用第一种方法,这实际上是将控制反转(IoC)应用于第二种方法的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接