您的位置:首页 > 运维架构 > 网站架构

浅析三层架构

2014-12-13 10:18 543 查看
     初次看到三层有些迷茫的感觉,都不知道这个到底是什么,也不知道有什么用。还记得以前师傅开会的时候,曾经提到过三层里什么U层、B层的,当时也没有过深的印象;现在学到了这一块,体会挺深的。

   什么是三层?

      三层指的是表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)

        UI层:指为用户提供交互操作的界面,用户可以输入数据和显示数据处理后的结果;

        BLL层:是UI层和DAL层交互的桥梁,通过BLL层实现对数据库的处理,将返回值传递给用户;

        DAL层:主要是对数据库进行处理,通过BLL层返回值对数据库进行增、删、改、查等操作;

   三层之间的关系:

      



         用类图表示为:

              


        其中Entity表示实体类,不属于三层中任何一层,但是却必不可少。数据在三层的传递过程中,可能因为在不同的层中的定义不同而造成混乱,而将变量封装在实体类中,这样在传递数据时只需传递实体类即可。实体类贯穿于三层中,它连接着三层。




   三层的作用:

      表示层的内容就是来和用户打交道,采集用户的输入信息和操作;是展现给用户的界面,用户的要求都体现在界面上。

      BLL层是将UI层传来的数据传给DAL层写入数据源,然后DAL层在将数据返回给BLL层,由BLL层返回给UI层;这样来实现UI层和DAL层的交互。当然在传递数据的过程中,BLL层还需要实现一些必要的业务逻辑的处理。其传递机制主要是:UI→BLL→UI和 UI→BLL→DAL→BLL→UI

      DAL层主要是对数据库的处理,通过BLL层传来的数据和要求对数据库进行增删改查操作。

   为什么使用三层?

    通过上述内容,相信我们能够了解到三层的基本概念了,那么我们为什么要使用三层呢?为什么不直接使用UI层和DAL交互,增加一个BLL层作为传递不是很麻烦吗?

      1、解耦合:通过三层设计,我们可以减少模块之间的耦合,实现修改某个模块而不影响整体功能的目的,使软件的可扩展性大大增强。我们先前所学的软件工程、设计模式等,它们的一个共同之处都是尽可能的减少模块间的耦合性,这样采用利于软件开发和后期的维护工作。

      2、易开发:一般情况下,一款软件是庞大的,需要很多人一起来开发。使用三层,团队之间就可以不用关心其他模块的功能实现,只要将自己负责的层写好就可以了,例如UI层的只需负责实现用户的各种操作,而不用去关心其数据如何在数据库中得到或写入等问题;DAL层也不用担心如何实现与用户的交互操作。他们只需负责自己应有的职责就行,最后通过约定好的接口进行实现就行了,这样大大的提高了团队开发的效率。

      3、易扩展、易维护:由于三层具有很好的低耦合性,这样就有利于我们的后期维护;也不用担心因为添加某些功能或者删除功能而造成系统的错误,使软件具有良好的扩展性;

     当然三层的使用还有利于软件的标准化,能更好的适应变化。但是有利就有弊,使用三层,增加了开发的成本和代码量;还有就是降低了系统的性能,每次的操作都需要通过BLL层的传递,显然没有直接通过访问数据库这样的性能好;有时候会造成级联修改,比如我们想在表示层增加功能,为了符合三层思想,我们就需要在BLL层和DAL层增加相应的代码。

      

   总结:

      任何一种方法的使用,有它的优点就有不利之处,我们应该从整体上来看问题,寻找适合的方法。但是总的来说,使用三层的优点还是大于弊端的。

      心得体会:对于自己来说,学习这一部分内容还是相对来说比较困难的。虽然其内在思想以前都接触过,但是这种方法的使用还是不太娴熟,对这个过程的理解不到位,造成自己有的地方还是有些混乱。比如,三层之间的传递问题,各个层内部的判断问题等。现在基本概念有了一定的了解,还需要通过具体的实践来巩固,同时对自己的问题进行深刻的体会与理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息