注意: BLL =业务逻辑层(也可以表示您的域)
我在试着理解洋葱的结构。在我看来,它实际上与分层体系结构是一样的,只有应用了依赖反转原理(DIP)。例如,这是典型的分层体系结构(箭头表示依赖项):
UI > BLL > DAL
注意:这是简化的,不应该意味着DIP不能/不和它一起使用。DIP仅仅意味着我们应该依赖抽象。
这是典型的洋葱流(也简化了):
UI > BLL < DAL
注意最后一个箭头是相反的。BLL有抽象,所以它们位于洋葱的中心,其他层引用它。洋葱文章:http://jeffreypalermo.com/blog/the-onion-architecture-part-1/
因为我已经习惯了分层架构,所以我想看看如果我把它和DIP结合起来,流程会是什么样子。下面是:
UI > 接口 < BLL > 接口 < DAL
很好的DIP图,它反映了这一点。https://en.wikipedia.org/wiki/Dependency_倒置_原则
这里有一篇文章解释了分层和洋葱之间的区别。这让我有了上面提到的问题。http://blog.ploeh.dk/2013/12/03/layers-onions-ports-adapters-its-all-the-same/
所以我的问题是,洋葱结构和带有DIP的分层架构有什么区别?有一个吗?
我的问题被标记为可能重复这个问题:洋葱结构与3层体系结构 My是不同的,因为我想知道是否真的有洋葱架构这样的东西。如果您声称洋葱架构是分层+ DIP的,那么洋葱真的存在吗?或者这是否意味着洋葱真的只是分层的一个版本,就像用糟糕的做法分层一样?
发布于 2018-02-15 15:24:08
在我看来,软件架构中的大多数“新”东西都是旧的想法,经过翻新,并与新技术或其他想法相结合。通常这些都是递增的。
在这种情况下,我认为重要的是数据库的改变不再是设计的中心。这不是一个微小的变化,它是相当基本的。那么,“洋葱架构”真的只是分层架构加DIP吗?也许吧。但钢铁基本上是铁加碳。那是不是意味着钢铁不是真的?
文字是标签。这个卡住了。我不知道还能说些什么。
https://softwareengineering.stackexchange.com/questions/366010
复制相似问题