三层架构理解_第1页
三层架构理解_第2页
三层架构理解_第3页
三层架构理解_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、层次结构在现实社会里随处可见。 记得有个笑话讲有个村长得意地向他老婆 吹牛:“全中国只有四个人比我官大,乡长、县长、省长和国务院总理”。这个 笑话也体现了真实社会中分层的现象。社会人群会分层,公司人员结构也会分层, 楼房是分层的,甚至做包子的笼屉都是分层的。虽然分层的目的各有不同,但都 是为解决某一问题而产生的。所以,分层架构其实是为了解决某一问题而产生的 一种解决方案。14.1.1常用的三层架构设计通过分解业务细节,将不软件系统最常用的一般会讲到三层架构,其实就是将整个业务应用划分为表 示层、业务逻辑层、数据访问层等,有的还要细一些,同的功能代码分散开来,更利于系统的设计和开发,同时为可能的

2、变更提供了更小的单元,十分有利于系统的维护和扩展。常见的三层架构基本包括如下几个部分,如图14-1所示。图14-1 常见的三层架构数据访问层DAL :用于实现与数据库的交互和访问,从数据库获取数据或保存数 据到数据库的部分。业务逻辑层BLL :业务逻辑层承上启下,用于对上下交互的数据进行逻辑处理,实 现业务目标。表示层Web :主要实现和用户的交互,接收用户请求或返回用户请求的数据结果 的展现,而具体的数据处理则交给业务逻 辑层和数据访问层去处理。日常开发的很多情况下为了复用一些共同的东西, 会把一些各层都用的东西 抽象出来。如我们将数据对象实体和方法分离, 以便在多个层中传递,例如称为Mod

3、el。一些共性的通用辅助类和工具方法,如数据校验、缓存处理、加解密处 理等,为了让各个层之间复用,也单独分离出来,作为独立的模块使用,例如称 为 Com mon。此时,三层架构会演变为如图14-2所示的情况。通用(fjrurnrji-图14-2三层架构演变结果业务实体Model:用于封装实体类数据结构,一般用于映射数据库的数据表或视 图,用以描述业务中客观存在的对象。Model分离出来是为了更好地解耦,为了 更好地发挥分层的作用,更好地进行复用 和扩展,增强灵活性。通用类库Common:通用的辅助工具类。在第5.2节中我们讲过可以将对数据库的共性操作抽象封装成数据操作类(例如DbHel per

4、SQL),以便更好地复用和使代码简洁。 数据层底层使用通用数据库操作类来访问数据库,最后完整的三层架构如图14-3所示。切匸WEB通川业务谨惜层BIX暫3弭山冋层DAL暫寤库访问宾totiliiy图14-3最后完整的三层架构数据库访问类是对ADO.NET的封装,封装了一些常用的重复的数据库操 作。如微软的企业库 SQLHelper.cs,动软的DBUtility/DbHeIperSQL等,为DAL提供访问数据库的辅助工具类。通过以上分析,我们知道如今常用的三层架构是个什么样子, 同时,我们也 知道了三层架构在使用过程中的一些演化过程。 那么,为什么要这样分层,每层 结构到底又起什么作用呢?我们

5、继续往下看。14.1.2 趣味理解:三层架构与养猪看新闻报道今年猪肉价格一路高涨,据说有人养猪都发财致富奔小康了,程 序员都说写代码没前途了,还不如去养猪,不过,可别认为养猪没有技术含量, 比写代码容易,其实养猪也大有学问。为了更好地理解三层架构,就拿养猪来做 个例子吧。俗话说:“没吃过猪肉,还没见过猪跑啊! ”。图14-4是三层架构化的养猪产业流水线趣味对此图。商场1R1ModelMHmwwBwiHnniibirnon图14-4三层结构与养猪对比图14-3与图14-4,我们可以看出:数据库好比猪圈,所有的猪有序地按区域或编号,存放在不同的猪栏里。DAL好比是屠宰场,把猪从猪圈取出来进行(处理

6、)屠杀,按要求取出相应的部 位(字段),或者进行归类整理(统计), 形成整箱的猪肉(数据集),传送给食品 加工厂(BLL)。本来这里都是同一伙人 既管抓猪,又管杀猪的,后来觉得效率太 低了,就让一部分人出来专管抓猪了(DBUtility ),根据要求来抓取指定的猪。BLL好比食品加工厂,将猪肉深加工成各种可以食用的食品(业务处理)。Web好比商场,将食品包装成漂亮的可 以销售的产品,展现给顾客(UI表现层)。猪肉好比Model,无论是哪个厂(层),各个环节传递的本质都是猪肉,猪肉贯穿 整个过程。通用类库Common相当于工人使用的各种工具,为各个厂(层)提供诸如杀猪刀、绳子、剪刀、包装箱、工具

7、车等共用 的常用工具(类)。其实,每个部门本来 是可以自己制作自己的工具的,但是那样 会使效率比较低,而且也不专业,并且很 多工作都会是重复的。因此,就专门有人 开了这样的工厂来制作这些工具,提供给 各个工厂,有了这样的分工,工厂就可以 专心做自己的事情了。当然,这里只是形象的比喻,目的是为了让大家更好地理解,实际的情况 在细节上会有所不同。这个例子也只是说明了从猪圈到商场的单向过程,而实 际三层开发中的数据交互是双向的,可取可存。不过,据说有一种机器,把猪 从这头赶进去,另一头就噗噗噜噜地出火腿肠了。如果火腿肠卖不了了,从那 头再放进去,这头猪又原原本本出来了,科幻的机器吧,没想到也可以和三

8、层 结构联系上。以上只是笑谈,不过也使三层架构的基本概念更容易理解了。上面谈了那么多,有人会问,我直接从数据库取出内容直接操作不可以吗?为什么要这么麻烦地用三层架构呢?三层架构到底有什么好处呢?不分层,当然可以,就好比整个过程不分屠宰场、加工场之类的,都在同一个场所(工厂)完成所有的活(屠杀、加工、销售)。但为什么要加工厂和商场 呢?因为当规模比较大的时候,管理起来就会变得非常复杂,这样的养殖方式已 经无法满足规模化的需要了。并且,从社会的发展来看,社会分工是人类进步的 表现。社会分工的优势就是让适合的人做自己擅长的事情, 使平均社会劳动时间 大大缩短,生产效率显著提高。能够提供优质高效劳动产品的人才能在市场竞争 中获得高利润

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论