zoukankan      html  css  js  c++  java
  • 浅谈“三层架构”

               今天我们来谈谈三层和传说中的“七层”。

               三层:(先看图)

               

               首先,我认为学习三层并不太难,体如今三方面:认识不难、理解不难、它所展现的内容不难。

               “认识三层”,网上随便一搜“软件的三层架构”云云,各种文章眼花缭乱。简单说三层就是指“表现层UI、业务逻辑层BLL和数据訪问层DAL”。表现层主要处理用户与界面的关系,业务逻辑层当然是主要处理业务逻辑,数据訪问层就是处理有关数据库的系列操作,比方增删改查等。

               其次,理解三层不难。我们先说说它是怎么来的为什么要用三层

               三层是从两层的基础上发展演变而来的,两层就是表现层和数据訪问层,也就是没有BLL层的架构。在一些小的系统中,有时候我们确实不须要分三层,直接从界面传入数据,再通过操作数据库处理些简单的逻辑,最后返回结果给用户就OK了。但一些大型企业级软件,若是缺少了分层架构,将是灾难性的。

               为什么这么说?我们能够非常明显看出来,添�了BLL层后,业务逻辑有了自己的容身之地,不再和界面、数据有过多的联系了,也就是“解耦”了。不管是开发人员还是维护者,最最不希望看到的就是系统里大把的耦合,耦合既不符合面向对象,也不符合软工的要求。就像是让你把十几种颜色不同的乱线头一一缕清,谁愿意干?

     

               “七层”:

               除了解耦,三层架构还方便了代码重用。在这里,我们浅浅地说一下关于“七层”的故事。以下是一张“七层”图。

              

               我在这里加了引號,是由于“七层”事实上并不一定是七层,你甚至能够分为五层、六层、八层都行!七层仅仅是一个象征性概念,就是三层加了一些设计模式的应用。上边这张图就是加了设计模式中的抽象工厂+反射、外观模式。

               详细解释下,外观模式继续为UI层和BLL层解耦,使得UI层仅仅须要调用Facade中的几个方法返回最后结果即可了,UI层终于与一切业务逻辑和数据处理无关;抽象工厂+反射+配置文件是用来方便数据库的,有了它,老板再也不操心你换数据库了!

               详细实现过程中,你还能够分出sqlHelper类来放一些经常使用数据库操作过程,主要是那些反复性的,以降低DAL层代码量;另外,DBHelper也是个不错的选择,里边存放的是SQL Server/Oracle/OLEDB/ODBC等各类型数据库连接方式,方便数据库切换。

               综上,我们说三层架构实现了代码重用。

     

               再回到三层:

               上面还说到三层展现的内容也不难。从上图我们能够看出,事实上三层就是调用与实现的过程。

               下层并不须要上层的存在,它仅仅须要完毕自己的功能就万事大吉了。

               比方UI层和BLL层,不论UI层长得什么样子,WinFrom也好、Web也罢,甚至不同的WinForm造型都无所谓,BLL层仅仅须要处理好业务逻辑即可了,从UI层接收用户信息,最后再给出一个返回信息给UI层。

               BLL层和DAL层也一样:DAL层从BLL层获得推断是否与UI层用户输入数据同样等指令(仅仅是一个样例)进行数据处理,最后给BLL层一个值(相应为布尔值),BLL层对该值进行逻辑加工,再返回给UI界面,这个过程就结束了。

              强调一下,三层之间并非无联系,而是联系非常弱。

              关于三层的难点,我觉得是三层在系统中的应用,如何在三层架构下实现一个良好的类图结构,是当下须要考虑的重难点,随着笔者机房收费系统重构的进行,我们再做分析吧。

              本文的不合理之处,还请各位读者提出宝贵意见。

              

             

              

             

              

  • 相关阅读:
    使用NHibernate绑定页面数据时,出现"未能加载视图状态,正在向其中加载视图状态。。。。"的Bug
    以?替代参数配合扩展方法简化数据库操作的实践
    好代码并非一蹴而就读《代码整洁之道》
    C#中,数据处理层之数据库基类
    C#中,页面层之简易验证模块
    C#中,数据交互层参数替代方案(三)
    读《程序员成长路线图:从入门到优秀》
    unity3d 屏蔽右键选项弹窗
    unity3d与web进行交互
    unity3d 使用背景贴图
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3795776.html
Copyright © 2011-2022 走看看