最近,学习到了三层架构,通过学习视频、示例及其它相关文件,有了一些总结性收获。
三层,总体是指表现层User Interface(UI)、业务逻辑层Business Logic Layer(BLL)和数据访问层Data Access Layer(DAL)。
UI层
显示层就是软件与用户展示的直接界面,展示界面的作用有两个:一个是向用户展示数据;另一个就是获取用户在界面上的操作信息,然后提供给其它层作相应处理。
显示层的设计原则就是以用户为主(以用户角度考虑),并且在达到用户要求的同时兼顾简洁性。如果一个窗体上面密密麻麻的控件、数据什么的,乱七八糟的,就算我们自己都不喜欢,更别说用户了,所以显示层在满足要求的前提下尽量简洁。
BLL层
业务逻辑层的主要作用就是处理业务的,业务包括获取数据访问层读取的数据库数据,展示在显示层;获得显示层用户操作,执行相应事件;获取显示层信息,令数据访问层写入数据库。一句话就是所有业务活动都在业务逻辑层处理。
业务逻辑层是沟通显示层和数据访问层的桥梁。
DAL层
数据访问层的作用就是对数据库里面的数据进行读取、修改、存入和删除。
原则
1、数据访问层只提供基本的数据访问,不包括任何业务相关的逻辑处理;
2、显示层只负责显示和采集用户操作,不包含任何业务相关的逻辑处理;
3、业务逻辑层负责处理业务逻辑,通过获取显示层传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给数据访问层处理。处理完成后,返回必要数据给显示层
注意
三层每层都在相应的程序集中,不应该在同一个程序集中。并且,三层之间的应用关系如:
1、DAL所在程序集不引用BLL和UI;
2、BLL需要引用DAL;
3、UI直接引用BLL,可能会间接应用DAL。
在设计三层的时候应注意避免相互引用。
优点
1、开发人员只关注某一层的操作;
2、新的实现容易替换原有层次的实现;
3、降低了各层之间的依赖关系;
4、有利于软件的标准化;
5、有利于逻辑的复用;
6、保护了数据的安全;
7、有利于负载平衡;
8、提高了运行效率;
9、便于构建不同网络环境中的分布式应用。
缺点
1、降低了系统性能:如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会发生级联修改:这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
使用情景
三层架构适用于构建分布式应用,并且业务逻辑复杂以及有真正的数据存储层。