架构设计—分层
一.模式描述
分层是一种常见的设计模式,比如操作系统就是一个很好的分层设计,在开发应用软件时,我们不必关心设备驱动程序,CUP指令集,文件管理,内存管理的实现,更不用了解芯片的各种逻辑门等。再比如网络的七层协议等。这这些分层设计将给我们带来如下好处:
1.在无需过多了解其他层次的基础上,可以将某一层作为一个有机整体来理解,如:无线了解以太网的工作细节,便可在TCP上构建FTP服务。
2.可以替换某层的具体实现。
3.可以将层次间的依赖性减少到最低。
4.分层有利于标准化工作,如:TCP和IP就是关于他们各自层次如何工作的标准。
5.一旦构建好某一层次,便可以为上层的各种系统提供支撑,如:TCP/IP可以同时被FTP,telnet,SSH和HTTP使用。否则,所有的高层协议都必须编写他们自己的底层协议。
二.关键概念
“隔离”是分层架构模式中非常重要的概念。封闭层意味着当请求从一个层移动到另一个层时,它必须通过它下面的层才能到达该层下面的下一层。例如,源自表示层的请求必须首先通过业务层,然后通过数据库层再到达持久层。 那么为什么不允许表示层直接访问持久层或数据库层呢?毕竟,从表示层直接访问数据库比通过一堆不必要的层只是为了检索或保存数据库信息要快得多。这个问题的答案在于一个被称为隔离的关键概念。隔离层意味着在体系结构的一个层中所做的更改通常不会影响其他层中的组件:更改与该层中的组件隔离,并且可能与另一个关联层(例如包含持久层)。如果允许表示层直接访问持久层,那么在持久层中对SQL所做的更改将影响业务层和表示层,从而产生一个紧密耦合的应用程序,在组件之间具有许多相互依赖性。这种类型的架构变得非常困难且变得昂贵。 隔离层的概念还意味着每个层独立于其他层,因此很少或根本不了解架构中其他层的内部工作。
三.如果判断分层是否成功
要想判断系统分层是否成功,可从如下几方面考虑:
1.如果修改其上层或下层,当前层是否也需要做相应的修改,如果当前层拥有标准的协议,那么不管上层和下层如何变化,当前层都可以不变,则分层成功;但如果上下层一旦变化,当前层也需要做相应的修改,那么就是一个失败的分层。