一、前言:
我们这里所谈论的三层是逻辑上的三层。分别是显示层(UI),业务逻辑层(BLL),数据访问层(DAL)。区分层次的目的是为了“解耦合”。并不是所有的系统都需要采用三层架构,对于业务逻辑简单;没有真正的数据存储层的简单程序来说,完全没有必要多此一举。只有当业务复杂到一定程度后,并且把数据存储到相应的数据库或独立的数据存储介质时,才有必要使用三层架构。
二、搭建三层结构步骤:
①搭建表示层(创建一个Windows应用程序)
②搭建业务逻辑层(类库)
③搭建数据访问层(类库)
④添加各层之间的相互依赖
三、显示层:
(一)UI的作用
①向用户展示特定业务数据
②采集用户的输入信息和操作指令(把特定的数据展现给用户)
(二)UI设计的原则
用户至上,兼顾简洁
(三)UI中常用的技术
WindowsForm:Form、Control
ASP.NET:aspx ascx master html
四、业务逻辑层:
(一)BLL的作用
①从DAL中获取数据,以供UI显示用
②从UI中获取用户指令和数据、执行业务逻辑
③从UI中获取用户指令和数据,通过DAL写入数据源
五、数据访问层:
(一)DAL的作用:
①从数据源加载数据(Select)
②向数据源写入数据(Insert/Update)
③从数据源删除数据(Delete)
总之,DAL就是与数据源在打交道,需要具备访问数据库的能力。也需要访问其他数据源的能力。
(二)DAL中常用的技术:
①ADO.NET+SQL语句
②O/R Mapping框架
③访问SQL Server数据库时Linq to SQL
六、三层架构的原则:
①DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理。
②UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理。
③BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候时候直接交给DAL处理。处理完成后,返回必要数据给UI。(如下图所示)
七、三层架构的引用关系:
表示层、业务逻辑层、数据访问层都需要引用实体类。表示层引用业务逻辑层,业务逻辑层引用数据访问层。层与层之间不能直接跨层调用。
八、优缺点
优点:
1、开发人员可以只关注整个结构中的其中某一层。
2、可以很容易的用新的实现来替换原有层次的实现。
3、可以降低层与层之间的依赖
4、有利于标准化
5、有利于各层逻辑的复用
缺点:
1、降低了系统的性能。这是显而易见的。如果不采用分层式结构,很多业务可以直接访问数据库,以此获得相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问仓中都增加相应的代码。