`
zhangzuanqian
  • 浏览: 269981 次
  • 来自: ...
社区版块
存档分类
最新评论

谈 三层结构与MVC模式的区别

阅读更多

转至:http://www.cnblogs.com/wisdomqq/archive/2009/04/29/1446579.html

 

在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题。
    那么我也来讲讲我对这两者的理解吧。
    首先对这个题目,本身是存在问题的,“XX结构”与“XX模式”的区别?请问中国社会制度与美国人生活方式有什么区别?
    这两者本身讲的是不同方向与角度的问题,在实际应用中他们的确存在一些相似的特点,在很多书籍中也没有深入讲解,以致于造成困惑,为了更好的理解他们,姑且来说说区别吧。
首先N层结构是一种软件抽象的层次结构,是对复杂软件的一种纵向切分,每一层次中完成同一类型的操作,以便将各种代码以其完成的使命作为依据来分割,以将低软件的复杂度,提高其可维护性。一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。三层结构是N层结构的一种,是人产在长时间使用中得出来的一种应用场合广泛的N层结构,被当作一种典型的软件层次结构而广为流传甚至写入教科书。
    MVC模式是一种复合设计模式,一种在特定场合用于解决某种实际问题来得出的可以反复实践的解决方案。巧合的是他也有三个事物组成,于是乎人们就有了一种想当然的对应关系:展示层-View;业务逻辑层-Control;持久层-Model。首先MVC中的三个事物之间并不存在明显的层次结构,没有明显的向下依赖关系,相反的,View和Model往往是比较独立的,而Control是连接两者的桥梁,他们更像是横向的切分。这样一来就出现一个结果,MVC中每个块都是可以独立测试的,而三层结构中,上层模块的运行测试势必要提供下层代码或者提供相同接口的桩。相对来说,MVC复杂得多,但是结构更清晰,耦合性更低。
    另外,MVC中每一块内部特别是Model内部经常被设计为多层的。在我认为的一个良好的MVC模式构建的结构中,Control是核心,小且较为稳定的,可以作为一个核心框架来提供,有扩展点,但基本上可以简单配置不需要任何代码就可以运行。而View则可能是一套或多种可选择的视图引擎,决定了软件展示给用于的界面,使用时的主要工作量在于扩展点以及根据需要而数量不同的视图模板。Model则是业务提供者,决定了软件提供的功能,其内部可能是一些普通的类或者是实现了某些接口的类,在这一块当中可能根据业务的不同而色彩缤纷,对于复杂的软件可能会分成很多层,如业务逻辑层、业务提供层、系统提供层、数据提供层、数据访问层等。
    我经常用于比喻MVC的例子是小时候玩的那种卡带式游戏机,Control是主机,一般来说我买一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。View则是电视机和游戏手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,要遥杆还是带震动的。Model则是游戏卡带,他绝定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏代码和存储单元,都根据游戏的需要而设计。

===================4/30补充==================

  有朋友提到游戏主机提供的卡带插槽的接口,在设计中,有时也由Control提供一组接口,以用于Model或View的实现,这样就形成了依赖。一般来说这样设计也没有太大的问题,只是会提高模块间的耦合度,也会带来一些侵入性。为了更完美,可以不用接口来提供契约,可以用配置信息(或称元数据信息)+反射来提供契约,那么这个类接口就可以退化到只要符合CLS就可以了,也就是普通的类,就像现在的计算机接口广泛采用USB,无论是U盘、打印机、扫描仪或者是加密狗,他们都是普通的USB设备而已。
  提到USB有一个题外话,模块的可插拔性设计甚至是热插拔设计,系统可以在不停止运行的情况下动态的挂载或移除模块,动态挂载模块需要系统能够自动发现新模块并根据自描述的信息进行自动配置,移除可能情况更复杂一点,需要“安全删除硬件”类似的功能。
  在设计广泛重用的框架时会考虑多种情况以达到更大的适应性,一般项目中应用MVC模式可以较为随意。

分享到:
评论

相关推荐

    三层架构和MVC模式区别

    本文旨在深入解析三层架构与MVC模式的区别,帮助开发者更好地理解和运用这两种模式。 ### 三层架构概述 三层架构,也被称为n-tier架构,是一种将应用程序分为三个独立部分的设计模式,旨在提高代码的可重用性、可...

    MVC模式与三层架构区别

    ### MVC模式与三层架构区别详解 #### 一、引言 在软件开发过程中,合理的设计模式和架构能够显著提升系统的可维护性和扩展性。本文旨在深入解析MVC(Model-View-Controller)模式与三层架构(3-tier architecture...

    C#三层架构的MVC项目源码

    本程序一个基于三层架构的MVC模式应用的完整示例项目源码,基于Asp.net 3.5... 1) 基于标准的三层结构。 2) 表示层采用MVC模式。 3) 数据的增、删、改、查操作。 4) 列表数据显示及分页处理。 5) Linq的应用等。

    三层架构和MVC的区别和联系

    综上所述,三层架构强调的是软件系统中不同功能模块的分离与组织,而MVC模式侧重于组件间的通信和协作。在具体的项目开发中,MVC模式常常被用于实现三层架构中的业务逻辑层和表示层的功能。通过了解和掌握这两种模型...

    UML图设计模式、三层架构、MVC.EAP

    UML图设计模式、三层架构、MVC.EAP

    三层架构与MVC.pdf

    【三层架构】 三层架构是一种常见的软件开发模式,旨在实现...总结来说,三层架构和MVC模式是软件设计中的重要工具,它们有助于构建可维护、可扩展的系统。理解并灵活运用这些设计模式,可以提升开发效率和软件质量。

    基于三层架构的MVC模式应用的完整示例项目源码

    CodematicDemoMVC示例源码 CodematicDemoMVC 是一个基于三层架构的MVC模式应用... 1) 基于标准的三层结构。 2) 表示层采用MVC模式。 3) 数据的增、删、改、查操作。 4) 列表数据显示及分页处理。 5) Linq的应用等。

    ASP.NET MVC 三层架构与mvc实例

    总结来说,"ASP.NET MVC 三层架构与mvc实例"是一个结合了ASP.NET MVC框架和三层架构思想的BBS系统开发示例,利用这种架构,开发者可以清晰地组织代码,实现数据库操作,同时通过Ajax技术优化用户界面。通过学习这个...

    一个三层架构的MVC代码

    三层架构和MVC模式是软件开发中的两种重要设计模式,它们在构建大型、可维护的Web应用程序时尤其有用。在这个名为“MVCDemo2”的项目中,我们可以看到这两种模式的结合应用。 首先,三层架构是一种将业务逻辑、数据...

    AMX三层架构(MVC)家庭财务管理系统源码

    典型的MVC三层架构编写,代码层次清晰,是学习三层架构以及工厂模式,反射的轻量级DEMO学习实例。 主要功能包含: 1、财务项目管理、家庭成员管理、收支明细管理、登陆用户管理、修改用户密码、 切换登陆账户。 2、...

    MVC与三层架构

    描述:“MVC与三层架构的区别以及三层架构和MVC的搭建过程” 在软件开发领域,MVC(Model-View-Controller)架构模式和三层架构(UI-BLL-DAL)是两种广泛采用的设计模式,它们分别在不同的应用场景下展现出了各自的...

    mvc三层架构源码

    **Mvc三层架构详解** Mvc(Model-View-Controller)架构模式是软件工程中广泛采用的一种设计模式,尤其在Web开发领域。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以此...

    MVC 三层架构示例

    而"三层结构示例"可能是更具体的代码示例,展示了如何在C#中实现三层架构的各个组件。 总的来说,理解和掌握MVC和三层架构对于提升Web应用开发的效率和质量至关重要。通过合理的分层设计,开发者可以更好地管理复杂...

    MVC+三层架构+EF的增删改查操作(连接数据库的).rar

    在提供的示例中,"MVC+三层架构+EF的增删改查操作(连接数据库的)"是一个实际的应用程序演示,它结合了MVC模式和三层架构,用于展示如何使用ASP.NET MVC、三层架构和Entity Framework进行数据库操作。这个demo可能...

    MVC模式与三层架构整合.docx

    MVC 模式与三层架构整合 MVC 模式是一种软件架构模式,它将应用程序分为三部分:模型(Model)、视图(View)和控制器(Controller)。MVC 模式可以与三层架构结合使用,实现一个更加灵活和可维护的系统架构。 在 ...

    ASP.NET三层框架+MVC模式项目实现增删改查实例,适合 新手

    通过深入研究这些文件,新手可以了解ASP.NET MVC如何与三层架构结合实现CRUD操作,从而提升自己的编程技能。 总结来说,这个项目为初学者提供了一个实践ASP.NET MVC和三层架构的平台,通过实现对"user"表的CRUD操作...

    MVC模式与三层架构结合

    【MVC模式与三层架构结合】的架构设计是一种在软件开发中广泛应用的高效方法,它结合了MVC(Model-View-Controller)模式和传统的三层架构(表现层、业务逻辑层、数据访问层)。这种结合使得系统具有更好的可扩展性...

    MVC三层架构+DAO工厂模式进行JAVA WEB开发

    在Java Web开发中,MVC(Model-View-Controller)三层架构和DAO(Data Access Object)工厂模式是两种常见的设计模式,它们对于构建高效、可维护的系统至关重要。本项目结合这两种模式,旨在提高代码组织的清晰度和...

    基于mvc的三层架构例子

    在本例中,MVC模式就是三层架构的一种具体实现: - **表现层**:由视图组成,负责与用户交互。 - **业务逻辑层**:由控制器和模型组成,处理所有业务规则和数据处理。 - **数据访问层**:模型内部实现,与数据库或...

Global site tag (gtag.js) - Google Analytics