标签:
发生在哪一层的变化,只需要更改该层,不需要更改整个系统。
层次清晰分工明确,每层之间耦合度低——提高了效率,适应需求变化,可维护性高,可扩展性高。
三层架构(3-tier architecture)
通常意义上的三层架构就是将整个业务应用划分为:
表示层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。
区分层次的目的即为了 “高内聚低耦合” 的思想
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
搭建三层架构
UI(表示层):
主要是指用户交互的界面。用于接收用户输入的数据和显示处理用户需要的数据。
BLL(业务逻辑层):
UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等
DAL(数据访问层):
与数据库打交道。主要实现对数据库的增、删、改、查。将存储在数据库中的数据提交给业务层。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到用户所需数据反馈给用户)
Model类
三层及实体层之间的依赖关系:
思想来源于生活:
MD5
MD5(Message-Digest Algorithm 5)消息摘要算法
MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。
MD5 长度一般是 32 位的 16 进制数字符串(比如71f396e4134a1160d90bb1439876df31),MD5的个数是有限的,但是数据源是无限的,因此存在着不同的内容产生相同MD5值的概率。因此MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。但是对不同内容产生的相同MD5值得概率非常非常低。
解耦
分工合作,开发人员 可以专注于某一层
可移植性、模块化设计、重用性
支持分布式系统(基于网络)
扩展性强、MSSQL、Oracle之间切换
三层:
UI层
BLL层(业务逻辑层,得到UI层的数据,返回UI需要的东西。不能出现MessageBox、TextBox等)
DAL层(DateTable 等都应该在DAL中而不应返回DataTable,返回的都是模型类(实体类))
1、UI(User Interface)用户界面
2、BLL层是具体的业务逻辑操作
3、DAL层只有 SQL 语句和数据处理,其它层一般不应该出现SQL语句以及和ADO.Net相关的类。BLL 虽然只是简单调用 DAL ,但 BLL 层并不是打酱油的:数据校验应该放到 BLL ; BLL 也会组合 DAL 成新的操作,比如修改密码(得到输入当前密码,经过校验,如果符合就可以更新密码到数据库)
4、Model 是在三层之间进行数据传递的。UI层调用BLL 、 BLL调用DAL ,数据用 Model 传递,UI不能直接调用 DAL。Model 不是一个层,是一个数据实体
三层架构一般会比不分层的要慢,但是三层分工明确,可以提高开发效率,牺牲一点点性能也是可以的,很多时候程序的效率也许并不是唯一追求的因素(不是说程序性能不重要,根据实际开发而定)
每次写三层的三个类和Model类的时候,都是重复的写,代码都差不多,因此可以使用代码生成器自动生成。我们完全可以自己写一个适合自己使用的代码生成器(只有自己才知道自己需要什么功能)
虽然我们可以使用代码生成器生成三层代码,但是我们一开始一定要学会自手动写三层架构的代码,等到能够自己熟练写出三层架构代码以后才可以使用代码生成器(要懂的原理,只有理解了三层架构模式,才能更好的使用代码生成器,因为有些代码生成器不满足实际需求还是要自己修改的)
标签:
原文地址:http://www.cnblogs.com/pirates/p/4603727.html