大家一看到这张图,就像到了三层架构,为什么出现三层架构呢?可能他有他的道理,即它要完成的目的:满足"高内聚,低耦合",达到复用,易修改,易维护等.下边我们看一看它的相关理论知识.
三层架构(3-tier application)通常意义上的三层架构就是将整个业务应用划分为:表现层(UI),业务逻辑层(BLL),数据访问层(DAL)。其目的即为了满足“高内聚,低耦合”的思想。
一,三层简介:
表现层(UI):通俗讲就是给用户的界面,即用户在使用一个系统的时候他的所见所得。
业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添,删除,修改,查找等。
下边两张图可以给我们很好的启示:
二,各层的作用:
1,数据访问层:主要是针对原始数据的操作层,而不是指原始数据。具体为业务逻辑层或表示层提供数据服务。
2,业务逻辑层:主要是针对问题的操作,也可以理解为针对数据层的操作,对数据业务逻辑的处理。
3,表示层,主要表示WEB方式,也可以表示成WinForm方式,Web方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善的提供服务。
4,各层之间的数据走向:
5,三层之间与业务实体之间的关系:
三,使用三层的优缺点:
优点:
1,开发人员可以只关注结构中的其中某一层;
2,可以很容易的用新的实现来替换原有层次的实现;
3,可以降低层与层之间的依赖;
4,有利于标准化;
5,利于各层逻辑的复用;
6,结构更加的明确;
7,在后期维护的时候,极大的降低成本和维护时间。
缺点:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
3、增加了开发成本。
熟悉了三层的一些理论知识,我们来看一下以三层类似的MVC的相关知识,先来看一张关于MVC结构的图片:
MVC三层架构
MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现; View层用于与用户的交互,通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
MVC开始是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
最后我们看一下MVC的优点与缺点(其实跟三层架构的目的都相同):
优点:
耦合性低,重用性高,生命周期成本低,部署快,可维护性高,有利软件工程化管理等等。
缺点:
不适合小型,中等规模的应用程序,增加系统结构和实现的复杂性 ,视图与控制器间的过于紧密的连接,视图对模型数据的低效率访问,一般高级的界面工具或构造器不支持模式等等。
都叫为三层架构,到底他们有什么不一样呢?最后我们看一下两者之间的区别:
MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。
在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
他们相同的设计理念就是:把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率.
综上,为关于三层的一些相关知识,现有理论的指导,再加上实践的躬行,才能掌握的更好。等待下篇的实践博客……