不知不觉来博客园已经快两半了,时间过的真快。

  这次的目标是再回顾一下传统的N层架构并且分析一下在DDD中的N层架构。

    一、先来看一看传统的N层架构 

 N-层架构的出现,主要是由于观注点的分离而产生,这三层中BL层的职责一般比较难理清,具体请看下图.

接下来我们关注一下层间交互(分离出角色与职责以后,如何交互将成为架构或模式的主要特征)

然而在实际项目中我们也会出现这样的状况

这里存在一个反模式

 

二、传统的N层架构与DDD中N层架构的关系

 

三、分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合,所以可以分为严格分层架构,如上面的图中都是。另一种是松散分层架构如下图

 

四、采用依赖倒置的N层架构

依赖倒置的两个原则:

    1 高层模块不应该依赖于低层模块,丙都都应该依赖于抽象。

    2 抽象不应该依赖于细节,细节应该依赖于抽象。

举个例子:用户接口层中定义了它需要访问的基础设施层的接口,而基础设施层只要实现这个接口就好。

对于用户接口层来说它依赖的是 它定义的基础设施层的接口。而基础设施层也依赖于这个接口。

由于使用依赖倒以后层间相互依赖于接口。实际上高层低层并不明显,相当于把整个架构都推平了。这也会后面的六边形架构

的引入奠定了基础。但这里需要注意的一点就是在依赖倒置这幅图中的用户接口的交互行为,它已经被限定了只能和应用层交互。

再来看看六边形架构

这是具有一种对称性特征的架构风格

对称性特征?=> 不同的客户将通过"平等"的方式与系统交互。

这里主要讲一下六边形架构的内部,其实是依赖倒置后有一个交互限制的松散藕合的N层架构。

 

简单理了一下N层架构,并顺代说了下DDD中的实现方式,完全是自己的理解,有对的肯定也有错的,希望大家多提宝贵意见。