您的位置:首页 > 其它

三层初识

2016-02-20 18:59 211 查看

一、三层概述:

1.三层划分:
物理:显示层/业务层/数据层
逻辑:UI/BLL+DAL/DB
2.为何三层架构?
高内聚,低耦合。思想是“分而治之”,将问题分开解决。
3.什么情况下需要使用?
有数据访问层,BLL层时使用。业务复杂到一定程度,数据存储到相应的数据库或者是一个独立的数据存储介质,情况下用三层。也就是数据访问脱离业务单独存在,业务脱离UI单独存在,UI只需要呼叫业务访问层实现和用户的交互,情况下使用三层。

4.不用三层的情况:
业务逻辑简单,无真正的数据访问层。

二、三层结构:





1.数据访问层:
不只访问数据库,还访问XML等数据源。
DAL作用/职责:Select;Insert/Update;Delete
从数据源加载数据(供业务层使用);向数据源写入数据;从数据源删除数据
一句话:跟数据源打交道,其他什么都不管。
DAL常用技术:为作用服务
(1)ADO.NET+SQL语句
(2)O/R Mapping框架(NHiberate) 对象(Object)和关系(Relation)映射框架 NHiberate可以将关系数据转换为面向对象中的对象模型。
(3)访问SQL Server数据库时,Linq to SQL 单表映射,提供集成查询环境

2.业务逻辑层:处理业务
BLL作用:
(1)从DAL获取数据,以供UI显示用
(2)从UI获取用户指令(登录按钮)和数据(用户名密码),执行业务逻辑(判断是否合法用户等过程)
(3)从UI中获取用户指令和数据通过DAL写入数据源
BLL职责机制:
(1)UI->BLL->UI
(2)——UI->BLL->DAL->BLL->UI


3.显示层:
UI作用:拿来主义
向用户展现特定业务数据
采集用户的输入信息和操作(用户名和密码)
UI设计的原则:
用户至上,兼顾简洁
如何展现?那么就需要技术支持。
UI中常用技术:
Windows Form:Form、Control
ASP.NET:aspx、ascx、master、html

对比两层结构:



无论界面,业务逻辑和数据访问,只要出现问题,必须重来,因为它的耦合性太强了,牵一发而动全身。现在大概大家就知道三层是用来干嘛的了。

三、那它可以解决什么问题?

它的特点是职责分明,每个层各个类职责分明,相对于独立,它可以解决的问题:
1.开发人员可以只关注整个结构中的其中某一层;
2.很容易用新的实现来替换原有层次的实现;
3.降低层与层间依赖;
4.利于标准化;
5.利于各层逻辑的复用,将复杂问题简单化。
缺点
1.降低系统性能;
2.有时候会导致级联修改。

四、具体应用

1.原则:
UI:显示采集用户操作,显示界面,部署控件后,调用业务
逻辑层的类,实现功能
BLL:业务逻辑,通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理,处理完后必须交给UI ,处理业务逻辑,调用数据访问类,实现用户所需功能。
DAL:数据访问,访问数据库
2.程序集Assembly:
(1)DAL/BLL/UI分别在不同的程序集中
数据源变化时,只需扩展一个DAL,不用改其他东西了,如果把三个放一个Assembly程序集中,单独改东西不能改,改完后还是需要编译整个程序集,所以放到一个里面,可以实现替换。
(2)引用关系
DAL->BLL->UI
(1)DAL所在程序集不引用BLL和UI
(2)BLL引用DAL
(3)UI直接引用BLL,可能间接引用DAL
(4)避免交叉引用,所以有个Model

3.Model实体类:为什么不叫它四层?
实体类:例如管理员信息,因为它本身是个类,它倾向于业务逻辑层,为了封装数据,为了能让数据在三层中流转,传输数据。三层都要添加Model引用,但Model不知道各层,独立于三个层次,它不引用其他层的程序集,其他会引用Model。所以UI里需添加Model。

为什么要用实体类?
Data Set不具备OO的优点,实现数据检索繁琐,易出错,使数据结构暴露在业务逻辑层和表示层,为消除该局限,我们需使用实体类。
从OOP思想考虑:
1.完全受控制的对象;
2.具有面向对象的基本特征;
3.可自定义行为;
4.消除了关系数据和对象之间的差异。
5.为我们在关系数据库和对象之间的差异。


4.三层规则:
1.层之间不得跨层调用
2.Entity object在各层之间传递数据
3.UI层绑定到别的数据采用基于关系的DataSet传递
4.每个数据库表都有一个DB Entity class与之对应,针对每个Entity class都会有一个BEM Class与之对应
5.有些跨数据库或跨表的操作需要由相应的BEM Class来提供支持
6.UI层和BLL层禁止出现任何SQL语句。

五、总结:

三层其实就这几个字:分散关注、松散耦合、逻辑复用、标准定义。初识三层,有何不合理的地方,欢迎大家斧正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: