戏说面向对象程序设计(C#版) 第十一章 三层架构,分层开发

第十一章       三层架构,分层开发 copyright dedecms

  织梦内容管理系统

         “大鸟,我们继续讨论吧!”小菜很沮丧的说。 本文来自织梦

          “小伙子,不会修收音机也是很正常的,没什么大不了的,用不着丧着一个脸。好象失恋一样,男人再强也要学会 内容来自dedecms

说‘不’。”大鸟安慰着说,“如果你的目标是要成为修理电器专家,那么你连收音机都不会修,那是很郁闷的事。但你现在 织梦内容管理系统

的目标是什么?” 织梦好,好织梦

        “我想成为软件架构师,编程专家。”小菜毫不含糊的说。 copyright dedecms

      “就是,你的人生目标很明确,别的方面弱一些有什么关系呢。”大鸟继续说道,“现在电视节目《波士堂》里请来的

织梦好,好织梦

嘉宾,全是中国的大企业家,许多人身家上亿,节目中都要求他们要有一个Boss 秀,难道真的要把他们的才艺去和人 dedecms.com

家艺术家比吗,我看老板们唱歌虽很业余,但却也感觉得到他们那份认真和情趣——原来亿万富翁也是会唱歌,会跳舞,

本文来自织梦

会食人间烟火的。至于他们歌唱得是不是跑调没有人在意的,明白吗?” 织梦好,好织梦

      “我明白!   ,我一定要好好努力,成为编程专家。”,小菜说,“我们言归正传,你说我那程序用了反射后,还有什 copyright dedecms

么需要修改的呢?” copyright dedecms

      “嗯,好!”大鸟清了清嗓子,开始上课,“如果你的程序再也不修改了,或者就是改改打折的额度和返利额度,那么

织梦内容管理系统

你的代码是足够可以了。不过需求却是会不断产生的。比如说,现在这个程序是单机版的程序,如果需要商场多层楼的 dedecms.com

所有收银机都要使用,那该怎么办?”

dedecms.com

      “那用XML 的配置文件就不合适了,应该用数据库会比较好!” 织梦好,好织梦

      “那么老板听说了C/S 架构的坏处,更新麻烦,不够安全等等,他也不是傻瓜,每次更新都需要针对每台机器部署,

织梦内容管理系统

一次就半天,那些工作时间他是需要给程序员付薪水的。所以他提出要改为B/S 架构,客户端用浏览器支持,你怎么办?” 织梦内容管理系统

      “那需要改界面了,把应用程序改成Web 程序。” 内容来自dedecms

      “就你现在的代码,改起来容易吗?” dedecms.com

      “好象不容易,需要重新写,尽管可以复制一些代码过去,不过要重新写的东西还是很多的。” 内容来自dedecms

      “好,那你有没有发现,我说了这么多的需求变动,但系统中有一些东西一直没有变,是哪些?”

内容来自dedecms

      “我知道,是策略模式用到的那几个类,也就是正常收费、打折消费、返利消费等算法是没有变化的。”

织梦好,好织梦

      “是呀,其实不是算法不会变,而是之前我们已经考虑它很多了,用了策略模式,用了反射技术使得它的变化相对稳

内容来自dedecms

定。你刚才也说,要把应用程序改为Web 是需要复制粘贴的,可实际上,改改界面和这些算法有什么关系?” dedecms.com

      “没有关系。”        织梦内容管理系统

      “还有,把配置文件改为数据库访问,这其实是读取写入数据的操作,和算法又有什么关系呢?”

本文来自织梦

      “也没有关系,我知道了,你是说,他们之间完全可以分离开,互不影响,改动其一,不要影响其它两者?哦,这是 织梦内容管理系统

不是就是所谓的三层架构?” 织梦内容管理系统

      “对,说得好,就是三层架构。三层架构或者分层开发说起来容易,在程序开发时的初学者还是有很多的误解。比如

织梦内容管理系统

有些初学者以为,DBServer-WebServer-Client 是三层架构,其实这是物理意思上的三层架构,和程序的三层架构没有 织梦好,好织梦

什么关系。还有人以为,WinForm 界面的窗体或者WebForm 的aspx 是最上一层,它们对应的代码后置(codebehind)

本文来自织梦

文件Form.cs 或aspx.cs 是第二层,然后再有一个访问数据库的代码,比如ado.cs 或SqlHelper.cs 是最下一层,这其 织梦内容管理系统

实也是非常错误的理解。再有,很多人认为MVC 模式(Model-View-Controler)就是三层架构,这是比较经典的错误理

内容来自dedecms

解了。总之,尽管三层架构不算难,不过由于现在很多数书籍材料的讲解不透,所以让我们初学者都概念模糊,理解有

织梦内容管理系统

误,非常的可惜的。”

dedecms.com

      “啊,我一直以为MVC 就是三层架构呀,看来真的弄错了。那么三层具体是什么呢?” dedecms.com

      “我不是已经告诉你了吗?你说说看,不管是应用程序WinForm,还是网页程序Aspx,它们主要用来干吗的?” 本文来自织梦

      “用来界面显示和处理的,对的,它们可以看作是一层。叫界面层?” dedecms.com

      “界面层这种叫法可以,或者叫UI 层、表现层都可以。” 内容来自dedecms

      “访问配置文件或处理数据库是不是就是数据层了?” dedecms.com

      “哈,三层架构是不是不难理解呀!说得很对,不过名称应该叫做数据访问层(Data Access Layer)或简称DAL 层。” 织梦好,好织梦

     “那么第三个层就是那些算法类了,这叫什么层呢?”

织梦好,好织梦

      “这些算法是谁制定的?由谁来决定其变化?” dedecms.com

      “当然是需求提出者,即软件系统所有者制定的,他们要改算法,我们开发就得改。这都是他们的业务算法呀!”

本文来自织梦

      “哈,好,你说到了一个词,业务(Business)或叫商务,这其实是软件的核心,我们就是根据业务规则来开发软件 本文来自织梦

提供服务的,所以这个层叫做业务逻辑层(Business Logic Layer)。不过它应该是中间的一层,介于另两者之间。”

dedecms.com

      “哦,所谓的三层开发,就是关于表现层、业务逻辑层和数据访问层的开发。那么他们之间的关系呢?” 本文来自织梦

      “你需要知道,这其实只是大方向的分层,每个层中都有可能再细分为多个层次和结构。比如PetShop4,这是微软 织梦内容管理系统

用它来展示.Net 企业系统开发的能力的范例,PetShop 尽管作为对大型软件系统开发的样例还是不够,但可以理解为儿 本文来自织梦

童的智力玩具。不过对于初学编程的小菜你来说,玩具却是最好的学习道具。”

织梦内容管理系统

下面图源自Bruce Zhang博客

本文来自织梦

织梦好,好织梦

 

copyright dedecms

      “如果是要细化,可能结构就会变得很复杂。比如给你看看PetShop4 的结构图。”大鸟继续说道。

dedecms.com

 

内容来自dedecms

dedecms.com

 

织梦内容管理系统

        “啊,上面那图我是明白了,下面这图看得晕晕乎乎的,哪有这样复杂的玩具,大鸟又在故弄玄虚,快点解释一下?”

织梦内容管理系统

小菜疑惑的说。 dedecms.com

        “第一次看到就完全看明白,那不就成天才了。学习它还需要慢慢来,以后再说。你现在应该对改写商场收银系统有 dedecms.com

点数了吧,应该怎么做呢?”

织梦好,好织梦

        “应该原来的解决方案分为三个项目,一个UI 项目,目前是WinForm 的程序,一个BLL 项目,用来把算法类都封 内容来自dedecms

装,还有一个DAL 项目,用来访问配置文件。对吗?”

织梦好,好织梦

      “嗯,差不多了,快去改吧,口说容易,实践中会有很多细节问题等着你去解决的。” copyright dedecms

      “好的,不过今天不行了,我前几天面试的一家公司给我Offer 了,我明天就要去第一天上班,明晚我再去改写这个 copyright dedecms

程序。”小菜说道。 copyright dedecms

      “恭喜恭喜,就是你之前提到了那家做物流软件的公司吗?找到工作你得请客啦。”

织梦好,好织梦

      “No problem,不过等我发工资吧。就是那一家。感觉公司还是很大的。”

内容来自dedecms

      “那你快去休息吧,第一天要好好表现哦!”

copyright dedecms

(待续)

内容来自dedecms

应一些回复朋友的要求,专门写了关于Web 架构方面的文章,本篇还只是简单介绍。其实这些都不是新鲜的东西,如果 copyright dedecms

你认为自己的确是小菜,我建议你去下载上一篇的代码来根据本篇的介绍去改写,编程是实践性很强的技术,理解不等 织梦内容管理系统

于会应用的。 dedecms.com

精彩推荐
热点内容
最近更新