模型数据[置顶] 三层架构 VS MVC

PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

    

一、三层架构

     1、表现层(UI):展示给用户的界面,用户在使用一个系统 的时候他的所见所得。

     2、业务逻辑层(BLL):针对详细问题的操作,也可以说是对数据层的操 作,对数据业务逻辑处置。

     3、数据拜访层(DAL):该层所做事务直接操作数据库,针对数据的增添、 删除、修改、更新、查找等。

     4、实体层(Model):倾向于业务逻辑层(三层),用来封装数据,三层间传送数据,不知道各个层次,独立于三个层次,Model不引用各层次,但三个层都会引用Model。

    

长处:

    低耦合、高重用和使用、低开发本钱、快速部署、可维护、利于软件开发管理

    

二、MVC

    

1、概念

            是XeroxPARC在八十年 代为编程语言Smalltalk-80发明的一种软件设计模式,它强制性的使应用程序的输入、处置和输出分开。使用MVC应用程序被分红三个核心部件:模型、视图、控制器。它们各自处置自己的任务。

    M即Model(模型层),主要负责出来业务逻辑以及数据库的交互

    V即View(视图层),主要用于表现数据和提交数据,是用户看到并与之交互的界面。

    C即Controller(控制器),主要是用作捕获请求并控制请求转发

    视图

            能为你的应用程序处置很多不同的视图。在视图中其实没有真正的处置发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

    模型

            模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处置任务。被模型返回的数据是中立的,就是说模型与数据格式有关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以够被多个视图重用,所以减少了代码的重复性。

    控制器

            控制器接受用户的输入并调用模型和视图去实现用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处置。它只是接收请求并决议调用哪个模型构件去处置请求,然后用确定用哪个视图来表现模型处置返回的数据。

    小结:

          首先控制器接收用户的请求,并决议应该调用哪个模型来进行处置,然后模型用业务逻辑来处置用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

    模型和数据

    

2、为什么用?

          大部分Web应用程序都是用像ASP,PHP进程化语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。教训比较丰富的开发者会将数据从表示层分离开来,但这平日不是很轻易做到的,它须要经心的筹划和不断的尝试。MVC从根本上强制 性的将它们分开。尽管构造MVC应用程序须要一些额外的工作,但是它给我们带来的好处是无庸质疑的。

    

3、一条创建软件的好门路

            如果你要断绝模型、视图和控制器的构件,你可能须要从新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。

    

4、好处与不足

    好处:

    每日一道理
因为自信,在呀呀学语时,我靠着纤嫩的双腿,迈出人生的第一步;因为自信,我一次次将第一名的奖状高高举起;因为自信,我毫不吝惜地剪掉飘逸的长发,在运动场上展示风采……感谢自信,它给了我一双翅膀,让我在电闪雷鸣中去飞翔,在风雨中去搏击人生!

    首先,多个视图能共享一个模型,当初须要用越来越多的方式来拜访你的应用程序。无论你的用户想要什么界面;用一个模型就可以处置它们。由于你已将数据和业务规则从表示层分开,所以你可最大化的重用你的代码(视图)。

            由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。模型是自包括的,并且与控制器和视图相分离,所以很轻易转变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到 Oracle,只需转变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的表现它们(模型)。      

            可以使用控制器来联接不同的模型和视图去实现用户的需求(控制器)

    不足:

           由于它没有明白的定义,所以完整懂得MVC很不轻易。使用MVC须要经心的筹划,由于它的外部道理比较复杂,所以须要花费一些时光去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序到来了必定的困难。每一个构件在使用之前都须要经过完全的测试。一旦你的构件经过了测试,你就可以够毫无顾忌的重用它们了。

            由于我们将一个应用程序分红了三个部件,所以使用MVC同时意味着你将要管理比之前更多的文件,这一点是确定的。好像我们的工作量增加了,但请记着它的好处

            MVC其实不合适小型甚至中等范围的应用程序,花费大批时光将MVC应用到范围其实不是很大的应用程序平日会得失相当。

    

三、相同与不同

    细分后:View(UI)、BIZ(BLL)、DAO(DAL)、Entity(Model)、Controller

    MVC把BIZ(BLL)、DAO(DAL)、Model(Entity) 同一称之为 模型(MODEL),得View、Controller、模型(MODEL)

    三层暂未体会到控制器的存在,完整是:UI、DAO、BLL

    相同点:

           同样是架构级别的,他们都有一个表现层;

           把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,进步团队开发效率。

    不同点:

          三层架构是最基本的项目分层结果,而MVC则是三层架构的一个变体,MVC是一种好的开发模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。

           三层”中典型的Model层是已实体类构成的,而MVC里,Model则是由业务逻辑与拜访数据构成的,它的分层也是为了结构清晰和低耦合,(高内聚:单一义务;低耦合:模块独立),区分比较大的就是三层架构中没有Control层,而是由单个页面上的控件的事件处置页面与业务逻辑之间,而MVC中control层是作为联系视图层和Model的纽带,使得整个项目的结构更加清晰,降低了耦合性。

    

 四、如何取舍

    他们相同的设计理念就是:三层是基于业务逻辑来分的,而mvc是基于页面来分的,根本就没有什么可比性。

            MVC模式是一种复合设计模式,一种解决方案

            三层是种软件架构,通过接口实现编程

            三层模式是体系结构模式,MVC是设计模式

            三层模式又可归于部署模式,MVC可归于表示模式

            在所谓的“三层”中,它要求你将BLL层独立出来,它只是告知你表示层和业务逻辑层之间的静态关系。而MVC则告知你 在这个详细的地方如何处置其动态驱动流程,尽管mvc仍然粗拙(甚至mvp也是粗拙的),但是已比所谓三层更过细一些了。

           三层架构和mvc设计模式侧重点不一样,三层是一种笼统的架构思惟,没有限制详细的设计;而mvc就比较详细的说明它的设计方法。

    

五、实例

           举例说明这两种方法不同的实现思绪:A在廊坊爱明道逛街,有人要抢劫他,打110报警了,B在广阳道也被劫持,他也打110报警了,他们打110的时候,接电话的是廊坊市市公安局总部指挥中心,对于A,来解救他是爱明道分局的警员,对于B,解救他的是光阳道分局的警员,对于AB来讲,他们不须要关心究竟是谁来解救他的,他们只管打110报警(类似于页面数据由action提交到控制器),由110指挥中心确定他的位置然后派出详细的地方警局去营救(控制器根据需求调用model层去实现对应的数据处置)。而三层架构在这个进程中就像A或B被劫持了,他们直接找到外地警(调用BLL层方法)的警员来处置。

           由于运用MVC的应用程序的三个部件是互相对立,转变其中一个不会影响其它两个,所以根据这类设计思惟你能构造良好的松巧合的构件。

            懂得的不是很深入,以后随着学习的深入再补充!

文章结束给大家分享下程序员的一些笑话语录: 一个程序员对自己的未来很迷茫,于是去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的"
于是他去问Lippman。
Lippman说"程序员的未来就是驾驭程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的"
于是他去问Gates。
Gates说"程序员的未来就是榨取程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的"
于是他去问侯捷。
侯捷说"程序员的未来就是诱惑程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝摇摇头"唉,我的孩子,你还是别当程序员了")

posted @ 2013-05-12 23:17  xinyuyuanm  阅读(309)  评论(0编辑  收藏  举报