在系统的分层组织方式下,上层通过接口使用下层定义的各种服务,下层对上层一无所知。每一层都对自己的上层隐藏其下层的细节,因此第4层无需知道第2层的细节。

 

分层的好处:

1.可以专注理解某一层,无需过多了解其他层次;

2.可以替换某层的具体实现,只要前后提供的服务(接口)相同即可;

3.可以将层次间的依赖性减到最低。如果第2层改变了,只要第3层不变,第4层及以上各层都无需改变;

4.分层有利于标准化工作。行业标准自不必说,即使企业、项目内部也可以据此进行标准化;

5.对于构建良好的层次,其上层调用和表现形式可以多样化。

分层的缺点:

1.层次并不能封装所有的东西,有时会带来级联修改。例如要在界面上增加显示的数据项,则需要在数据库中增加字段,中间的每一层都会因此改变;

2.过多的分层可能会影响性能。

 

分层中最困难的问题是确定建立哪些层次,以及每个层次的功能职责。

分层中常用的两个词语是Layer和Tier,通常将Tier理解为物理上的分离,而Layer则更多表示逻辑上的分离。

 

三个基本的层次是:表现层、领域层、数据源层。

1.表现层是系统为外界提供服务的接口。通常处理用户与软件之间的交互,向用户显示信息并将从用户那里获取的信息解释成领域层或数据源层上的各种操作;也可能是为其他系统或软件提供服务,如WebService等;

2.数据源层是系统从外界获取服务的接口。主要处理与其他系统的交互,可以是事务监控器、其他应用、消息系统,最常用的则是数据库;

3.领域层(业务层)处理业务相关逻辑,是表现层与数据源层沟通的桥梁。主要职责包括数据验证、运算,以及为表现层提供服务并调用数据源层的服务。

 

如何分层取决于应用的复杂程度:

1.对于简单应用,可以在子程序级别进行分层,不同的子程序分别处理界面操作、数据存取和数据处理;

2.对于稍复杂的应用,可以在类级别进行分层;

3.对于更复杂的情况,则需要在模块级进行分层。

关于分层依赖性的普遍原则:领域层和数据源层绝对不要依赖于表现层!

区分领域逻辑比较困难,可用的测试方法是:考虑向系统中增加完全不同的新层、考虑替换数据源格式等,将会剧烈变化的处理逻辑放入领域层中。

 

在系统部署的时候,需要考虑各层如何部署。需要考虑的因素包括系统响应性、网络连接、数据同步、客户端升级维护、浏览器兼容性等。

系统开发时需要防备的复杂性增压器:分布式处理、显式多线程、范型差异、多平台协同开发、极限性能要求。