最近在学习三层结构,通过上网找各种资料,初步学习了一些三层的知识跟大家分享一下。先跟大家介绍一下三层的来源,为什么叫三层?
在现代的社会的软件开发体系中结构可以简单的概括是N层体系结构,N大于等于1,他们的开发方式不同:
换句话说:单机体系(N=1)、Client/Server结构体系(N=2)、多层体系结构(N>2)。下面我们就对这三种体系结构进行简单的介绍和比较:
单机体系:
单机体系,一般情况下是针对某一种单一的应用,如字典软件、翻译软件等等,这种软件适用于单机状态。这种开发方式不适用于综合管理系统的开发。
C/S结构:
C/S(Client/Server)结构,即客户机和服务器结构。C/S结构是在局域网上发展起来的,它具有数据集中管理的能力,在出现之初确实解决了很多计算机发展的难题,同时随着4GL语言的发展,用户的界面也逐渐丰富起来,在Client端的事物处理能力也使整个系统的性能得到全面的提高,并使管理信息系统得到快速的发展。
我们根据两层结构体系的概念来分解C/S结构的话,可以将他分为表现层(也叫表达层)和数据层。简单说:client直接访问DBserver为两层结构。 数据层提供数据存放的载体,而表现层则将数据层中数据取出,向用户进行显示。
在两层体系结构中,表现层对数据库进行直接操作,且大部分的商业处理逻辑(Business Logic,数据之间的关系规则)也在表现层中实现。
两层结构在应用软件上的模型如图:
三层体系结构:
三层体系结构是N层体系结构的典型,所谓的三层体系结构就是将原来在两层体系结构中的商业逻辑部分从数据层和表现层中提炼出来,形成中间层,也叫组件层。简单的地说: client通过中间件等应用服务器访问DBserver就是三层结构。 所以三层就是:显示层UI、商业逻辑层BLL(Business Logic Layer)、数据访问层DAL(Data Access Layer)。
各层的概念:
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
三层结构在应用软件上的模型如图:
当大家看到这幅图时,大家对三层一定不要出现对概念的错误理解,其实三层的划分分为物理上和逻辑上划分:
物理:显示层、业务层、数据层。
逻辑:UI、BLL+DAL、DB。
物理和逻辑是不同的,我们要以分为两的看问题。我们讨论的是逻辑上的三层结构:UI、BLL+DAL、DB。有可能在物理上BLL和DAL都运行在应用服务器上,而不是在数据库服务器上。
各层的作用:
1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。
3:表示层:主要提供与客户的交互功能,向用户展示特定业务数据和采集用户的输入信息和操作。
C/S 模式的优点和缺点
上面简单的介绍了C/S结构和三层体系结构,为了更好的让您了解两者的区别,我们将两者进行一些比较。
C/S 模式的优点:
1、由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
2、操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
3、C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
C/S结构的缺点:
1、缺乏有效的集权控制
在众多的C/S软件中我们不难看出,所有的构件不能够在一个地点(如一台机器)进行统一的管理,而不得不将他们分化在各个Client的应用中,使得维护和安全保密均很困难。
2、缺乏安全性
在分散的计算机系统中,控制信息的访问安全是非常困难的,由于客户端经常需要对一些敏感的数据进行分析导致安全漏洞很容易发生。
3、客户端工作量重
当将一个应用中的所有的商业逻辑全部在各个客户端来实现的时候,仅仅是使用桌面电脑的客户端资源将发生不堪负载的情况。
4、软件的重用性差
由于C/S结构下的应用软件一般均是根据操作系统进行定制,且开发工具也是有一定的限定,一旦需要改变某一个要素的话,很可能只能重做。
三层结构的优点和缺点:
三层结构的优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明确
7、在后期维护的时候,极大地降低了维护成本和维护时间
三层结构的缺点:
1、降低了系统的性能。
这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。
这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了开发成本。
由于刚开始学习三层架构的知识,对于三层结构的理解还有很多欠缺的地方,欢迎大家来拍砖。