三层架构的学习

为什么要使用三层架构

对于一个简单的应用程序来说,代码量不是很多的情况下,一层结构或二层结构开发完全够用,没有必要将其复杂化,如果对一个复杂的大型系统,设计为一层结构或二层结构开发,那么这样的设计存在很严重缺陷。下面会具体介绍,分层开发其实是为大型系统服务的。在开发过程中,初级程序人员出现相似的功能经常复制代码,那么同样的代码写那么多次,不但使程序变得冗长,更不利于维护,一个小小的修改或许会涉及很多页面,经常导致异常的产生使程序不能正常运行。最主要的面向对象的思想没有得到丝毫的体现,打着面向对象的幌子却依然走着面向过程的道路。意识到这样的问题,初级程序人员开始将程序中一些公用的处理程序写成公共方法,封装在类中,供其它程序调用。例如写一个数据操作类,对数据操作进行合理封装,在数据库操作过程中,只要类中的相应方法(数据添加、修改、查询等)可以完成特定的数据操作,这就是数据访问层,不用每次操作数据库时都写那些重复性
的数据库操作代码。在新的应用开发中,数据访问层可以直接拿来用。面向对象的三大特性之一的封装性在这里得到了很好的体现。现在找到了面向对象的感觉,代码量较以前有了很大的减少,而且修改的时候也比较方便,也实现了代码的重用性。

三层架构将数据层、应用层和业务层分离,业务层通过应用层访问数据库,保护数据安全,利于负载平衡,提高运行效率,方便构建不同网络环境下的分布式应用;

 业务层主要作用是接收用户的指令或者数据输入,提交给应用层做处理,同时负责将业务逻辑层的处理结果显示给用户。相比传统的应用方式,业务层对硬件的资源要求较低; 

 应用层依据应用规模的不同,所承受的负荷会有较大的差异,另外客户端的数目,应用的复杂程度都会对其造成一定的影响。

 ERP三层结构提供了非常好的可扩张性,可以将逻辑服务分布到多台服务器来处理,从而提供了良好的伸缩方案;

 数据层包括存储数据的数据库服务器和处理数据和缓存数据的组件。组件将大量使用的数据放入系统的缓存库,以提高数据访问和处理的效率.

同时ERP采用大型数据库提供高性能、可靠性高的海量数据存储能力存储ERP的业务数据。

举例来说,先前学习过的学生信息管理系统,在Modal项目中,为数据库的每个表,都设计一个相应的实体类,这样,就相当于对每个表实体,在.NET程序中,都可以通过类对象来应用。在上面介绍的3层中,通常都会用到实体类对象。

综上所述,这5个项目之间的关系是这样的:

  

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:界面层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

概念简介:

  1、界面层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

  2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

  3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

三层结构原理:

  3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。

  所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

  三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。

界面层

   位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

业务逻辑层

   业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如MartinFowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:界面层、领域层和数据源层。作为领域驱动设计的先驱Eric
Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。

  业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。

数据层

   数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

  简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

优缺点:

优点

  1、开发人员可以只关注整个结构中的其中某一层;

  2、可以很容易的用新的实现来替换原有层次的实现;

  3、可以降低层与层之间的依赖;

  4、有利于标准化;

  5、利于各层逻辑的复用。

缺点

  1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

与MVC的区别:

    MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。  

在三层架构中没有定义Controller的概念。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然,在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

 

小结:

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。 所以,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。一个好的分层式结构,可以使得开发人员的分工更加明确。一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进。虽然三层架构仍有不可避免的缺陷,但是软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。通过这次学习,对软件体系结构又有了更深入的了解。

时间: 2024-08-03 19:54:26

三层架构的学习的相关文章

高手请指导三层架构的学习步骤

问题描述 我是名菜鸟学生,想学三层MVC,在51aspx上下了几个三层的小系统,感觉他们用的有SqlHeplper,然后还有自己的类库,然后再命名空间也是自己定义的,代码看的是懂非懂的,就是自己写的时候不顺,我刚开始学的时候用的是微软的数据集,然后就是他们自己可视化生成的,当我看到51aspx上高手的代码后,知道我需要加紧学习,想请高手知道一下步骤,然后再分析一下现在用MVC开发的很多吗?

想请教诸位一个关于三层架构DAL的问题

问题描述 我最近在做毕业设计,是个管理系统,然后在DAL层有一个提供给普通用户修改个人信息的功能,然后问题就在这里,我该如何只读取这个用户的信息,也就是select*fromusertabewhere后面的限定条件怎么写,上层的数据源选用的是OBJECTDATASOURE 解决方案 解决方案二:whereid=123UI传id解决方案三:你应该学习的是sql,而不是什么"三层架构".学习sql用时半年,而三层架构(对于已经有了足够基础知识和经验的人来说)顶多只需要1周.如果一个hr不懂

ssi框架学习总结(mvc三层架构)_JSP编程

相信大家对于mvc的三层架构已经灰常熟悉了,在这就不细讲了,个人感觉ssi的框架结构还是比较典型的mvc三层架构,还是比较容易上手的.关于这块的入门我想特别感谢下FrankHui童鞋,在他的帮助下,我才能比较快滴熟悉了这个架构,对我学习ssi的框架还是很有帮助滴.ssi的框架主要是由struts2,spring以及ibatis组成,他们负责各层之间的交互与协作,从而实现整个web端的功能实现与整合.Struts目前主要负责数据传递和控制方面,spring则依靠其强大的依赖注入技术实现了类似bea

asp.net-怎么快速的学习三层架构

问题描述 怎么快速的学习三层架构 我是一名初学者,想学习一下三层架构,但不知道从什么地方入手!望各位大神指点一下!谢谢!!! 解决方案 先要理解什么是三层架构,三层架构的好处在哪. 再找一个实例,自己照着边理解边敲上一边,完了自己独立写个demo运行一下. 解决方案二: 首先把思路理清了 其次说话利索的 如 你指的是哪三层架构?java ssh?但你的标签是asp-net你看你问的这问题

NET高级开发一:用VB.net+ADO.NET+SQLServer开发三层架构的运用程序

ado|server|sqlserver|程序|高级|架构      NET高级开发一:用VB.net+ADO.Net+SQL Server开发三层架构的运用程序 一:什么是三层体系结构:    三层体系结构,顾名思义,我们将运用程序从整体上分为三个独立而又彼此相关联的层次,这三层分别是:用户层.业务逻辑层.数据层 .用户层就是运用程序与用户的操作接口,比如说:网页.在用户层,常用到的技术如:HTML.CSS.JavaScript.ASP/asp.net等.业务逻辑层 就是将一些业务处理的逻辑与

ASp.net 剖析三层架构

转自:http://blog.sina.com.cn/s/blog_5ea9354f0100dea0.html 三层实现的留言和查看留言 本文不是从理论的角度来探讨三层架构,而是用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层次与作用.写本文的目的,不是为了说明自己的这个方法有多对,别人的肯定不对,而是希望给那些初学三层架构却不知从何入手的朋友提供一点帮助.因为网上的文章,大多是注重理论的介绍,而忽略了具体的实践应用,或者有示例但讲得不透彻.导致看了之后,理论上又学习了一

浅析三层架构

1.  什么是三层          所谓三层架构,是在客户端与数据库之间加入了一个"中间层",也叫组件层.这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上.          通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想.          

三层架构(二)——为什么要用三层架构?

  二.为什么要用三层架构?      1.分析       层次结构在现实社会中随处可见.记得有个笑话讲有个村长得意的向他的老婆吹牛:"全中国比我官大的只有四个人,乡长.县长.省长和国务院总理",这个笑话体现了真实社会的分层现象,社会人群会分层,公司管理人员结构也会分层, 楼房是分层的,甚至做包子的笼屉也是分层的,虽然分层的目的各有不同,但都是为了解决某一问题而产生的,所以分层架构是为了解决某一问题而产生的解决方案.         社会分工的优势:让适合的人做自己最擅长的事情,缩短

ASP.NET 三层架构使用IDAL 接口层有什么作用,有和妙用,使用业务逻辑层BLL直接调用数据层DAL不可以嘛。

问题描述 我们通常是UIweb层调用BLL层,BLL层调用DAL达到数据的交换.但是看到大多数项目是有个IDAL接口,只是声明方法没有任何的代码实现部分,代码实现部分都放在了DAL层,然后BLL层去调用IDAL接口层的方法实现,并没有去调用DAL层,UI层调用BLL层,这里的接口层有和作用,请教各位帮忙解答,不胜感激! 解决方案 解决方案二:IDAL是DAL层的类要实现的接口.DAL层的各类需要完成对数据库的访问,但是不同的数据库需要使用不同的DAL对象,这样对于BLL层来说无法实现数据库无关性