浅析程序设计中的三层架构

时间:2022-10-11 02:19:08

浅析程序设计中的三层架构

摘要:阐述什么事三层架构,通过日常生活中的实例对三层架构做出较全面的解析

关键词:三层架构;解耦

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)31-0061-02

三层架构在现在的中小型系统中有着普遍的应用。关于三层架构的问题有很多探讨。对这个老问题,本文从新的角度去观察、探析,使读者从不同的方向去了解、认识、应用这个架构。

1 三层架构是什么

层次结构在现实社会里随处可见。公司人员结构会分层,楼房是分层的,产品的生产过程是分层的,商品从生产到销售的各个环节是分层的,虽然分层的目的各有不同,但是都是为解决某一问题而产生的。所以,分层架构其实是为了解决某一问题而产生的一种解决方案。

那什么是三层体系结构呢,三层架构是在客户端与数据库之间加入了一个“中间层”,也叫业务逻辑层。这里所说的三层结构,不是指物理意义上的三层,不是简单地放置几台机器就是三层体系结构,也不仅仅Web应用才是三层体系结构,WinForm也同样可以拥有三层架构,三层是指逻辑上的三层,即使在同一台机器上也可能有三层架构。

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

1.1各层的作用

1)数据访问层:主要是对原始数据的操作层,如数据库数据、文本数据等,而不是指原始数据(如文件的具体内容),也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

2)业务逻辑层:主要是针对具体的问题的操作,如合法性校验、权限控制等,也可以理解成对数据层的操作,对数据业务逻辑处理,从数据层拿来数据,然后经过转换加工,在输出给表现层,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3) 表现层:主要表示WEB方式,也有WINFORM方式,或者是App的方式,WEB方式可以表现成动态加载的页面,如果逻辑层相当强大和完善,表现层的表现形式应该是可以随意更换的,无论表现层如何定义和更改,只要业务逻辑没有改变,逻辑层都应该能完善地提供服务。

1.2什么样的系统可以说是合理的三层

三层结构的程序不是说把项目分成DAL、BLL、 UI三个模块就叫三层了,三层程序必须符合以下条件:

1)最关键的,表现层(UI层)只能作为一个外壳,不能包含任何业务逻辑的处理过程

2) 设计时应该从业务逻辑层(BLL)出发,. 在BLL层上应该实现所有业务逻辑。

3) 不管数据层是一些对数据库的简单操作也好,还是一个类也好,应该在一定的抽象程度上做到系统无关

4) 不管使用Model类还是别的远程对象技术,不管部署的时候是不是真的分别部署到不同的服务器上,最起码在设计的时候要做这样的考虑,更远的,还得考虑多台服务器通过负载均衡作集群

所以考虑一个项目是不是应该应用三层/多层设计时,先得考虑下是不是真的需要? 实际上大部分程序就是不需要分层的,完全没必要作的这么复杂. 而多层结构是用于解决真正复杂的项目需求的。

1.3三层架构的优缺点

优点:开发人员只需要关注自己开发的层;可以很容易的用新的实现来替换原有层次的实现;可以降低层与层的依赖;有利于系统的标准化;利于各层逻辑的复用。结构更加的清晰明确;在后期维护的时候,可以极大地降低维护成本和维护时间。

缺点:降低了系统的性能,如果用一层结构,UI直接访问数据,去掉了中间环节,自然节约了运算时间,提高了系统性能。有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,就必须在相应的业务逻辑层和数据访问层增加对应的代码,以保证系统继续符合设计的原则。增加了开发成本。

2生活中的三层架构

我们应该都去图书馆借过书。借书的过程看似简单,其实就是三层结构的日常应用,如图1。

图1 三层机构与借书

数据库好比书库,所有的书都按照分类号和编号,存放在不同的书架上。

Dal层好比取书员,把书从书库中取出来,按照要求放在不同的窗口,交给不同的借书员,不关心书是借给哪个用户的。

Bll层好比借书员,将书借给用户,不用去关心书是从哪个书架来得。

Web层好比读者,只需要从Bll层也就是借书员那里借走自己所需要的书,不必关心书从哪个取书员那里来得,更不必关心书在书库哪个书架存放。

书好比 Model,无论是那层,各个环节传递的本质都是书,书贯穿了整个借书的全过程。

当然这个过程只是举个例子,比如Bll的借书员层,可能存在书损坏了,对书的修补,或者对书的简单包皮等细节工作。

以上通过日常生活中的借书,比较形象地介绍了三层架构。那为什么不直接从数据库取出内容直接操作不可以吗,为什么要这么麻烦的用三层架构呢。这样当然也是可以的,比如说很小的一个资料室,只有一个管理员,这个管理员直接面对读者,所有图书工作都由一个人完成当然是可以的,这就好比写一个小的程序,一层完全能解决,就没必要在分为多层处理。但是在大型图书馆,同时有很多读者借书,这样一个人是不可能完成所有事情,这个时候就需要分工,从而提高效率。当我们处理大型项目时候,分层就是有必要的,让各层各尽其职。所以分不分层需要根据实际情况而定,不能一概而论。

3 使用三层架构的目的:解耦。

我们使用三层架构的目的是解耦,同样拿上面的例子来讲:

读者(UI层)是不断变换的,我们不可能让每个读者直接去书库里面自己找书,在大量图书中,不懂编目的读者根本找不到自己需要的书。

借书员(Bll层),借书员请假了,只要一个懂得借书操作的人员就可以顶替他的岗位,这个人员并不需要了解书库书的排放。

取书员 (Dal层),取书员辞职了,这时候来一个新的取书员,我们只需要这个取书员了解书库就可以了,并不需要他对借还书软件进行熟悉。

这样任何一层发生了变化,都不会影响到另外一层,即解耦。

4 三层架构与两层的区别

两层架构:

(当任何一个地方发生变化时,都需要重新开发整个系统。“多层”放在一层,分工不明确耦合度高――难以适应需求变化,可维护性低、可扩展性低)

三层架构:

(发生在哪一层的变化,只需更改该层,不需要更改整个系统。层次清晰,分工明确,每层之间耦合度低――提高了效率,适应需求变化,可维护性高,可扩展性高)

综上上所述,三层架构具有结构清晰、耦合度低、可维护性高、可扩展性高、利于开发任务同步进行和容易适应需求变化的优势。但是降低了系统的性能。如果不采取分层结构,很多业务可以直接方位数据库来获取相应的数据,而现在必须通过中间层来完成;所以我们在程序设计和开发的过程中,不能为了应用三层结构而去设计程序,而是应该在需要用三层架构或者多层架构时候才用,用三层架构的目的是为了使复杂问题简单化,而不是简单问题复杂化。多层的设计应该是用来解决问题的,而不是制造麻烦的。

参考文献:

[1] 谈春燕.B/S三层架构下单服务器集群技术的应用[J].冶金自动化,2009(6).

[2] 博客园[EB/OL].http://.

[3] Microsoft API 和参考目录[EB/OL].http:///library.

上一篇:学会拒绝(节选) 下一篇:所谓“暖男”,不过是“及格男”而已