`

[转] 什么是MVC(三层架构)

阅读更多
http://sduchengxu.blog.51cto.com/147902/23710

模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
MVC如何工作
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
为什么要使用 MVC
大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。
首先,最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用HTML来表示,但是它们也有可能要用Macromedia Flash和WAP来表示。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序所重用。
因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。
对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
MVC的缺点
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。
根据我个人经验,由于我们将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。
MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
MVC是一条创建软件的好途径
MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。
Java开发Web Application有几种符合MVC设计模式的开发方式。
1:Jsp+Servlet+JavaBean(EJB)
2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)
3:TDK(Turbine,Velocity...)
4:Xsp
5:Jsp+Struts+JavaBean(EJB)
附:
三层架构即“表现层”,“业务层”,“持久化层”。表现层实现的代表作品是Struts框架,业务层实现的代表作品是Spring,持久层实现的代表作品是Hibernate。
举个例子。
持久层从持久库中取出-10。
业务层按照一定的逻辑(这里我们举例取温度的逻辑)翻译成-10摄氏度。
表示层显现给用户“哎呀,今天好冷!”。
层就相当于一个黑盒子,我们不用知道它内部怎么实现,只需要知道如何去调用它就行了。每层只与上下相邻的两层打交道。当一层内部由于技术变迁发生变化时,只要接口不变,其他层不用做任何改变。分层之后灵活性提高,也便于团队分工开发。
分享到:
评论

相关推荐

    MVC三层架构

    MVC三层架构基础介绍简单来说,Design Patten 就是一个常用的方案。 在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些...

    C#本科期末大作业MVC三层架构亮灯的仓库管理系统源码.zip

    C#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+EasyuiC#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+EasyuiC#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+...

    MVC 三层架构示例

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

    asp.net MVC三层架构

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。...这个适合刚接触三层架构的来学习,比较简单。

    C#MVC 三层架构 ,清晰明了 bootsrap

    【C# MVC 三层架构详解】 C# MVC(Model-View-Controller)是一种设计模式,广泛应用于.NET框架下的Web应用程序开发。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现...

    MVC 三层架构应用

    MVC三层架构是现代软件开发中常用的模式之一,尤其是在Web应用程序的开发过程中。该模式通过将应用程序分为三个主要部分——模型(Model)、视图(View)和控制器(Controller),来提高代码的可维护性、可扩展性和复用性...

    MVC三层架构实例

    下面将详细阐述MVC三层架构的核心概念及其在实际应用中的作用。 **1. Model(模型层)** 模型层是应用程序的核心,负责处理业务逻辑和数据管理。这里的“模型”通常指的是业务对象,它们封装了数据和与数据相关的...

    mvc三层架构应用案例简单代码

    **MVC三层架构详解** 在软件开发中,MVC(Model-View-Controller)模式是一种广泛应用的架构设计,尤其在Web应用中。该模式将应用逻辑分为了三个主要部分,以实现良好的解耦和职责划分。这个“mvc三层架构应用案例...

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

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

    茶叶MVC 三层架构

    【茶叶MVC 三层架构】是一种在开发Web应用程序时常用的设计模式,特别是在使用Microsoft的ASP.NET MVC框架时。这个架构模式旨在将业务逻辑、数据访问和用户界面这三层分离,以便于代码的维护和扩展。在Visual Studio...

    基于ASP.NET MVC的三层架构博客网站系统源码

    资源名:基于ASP.NET MVC的三层架构博客网站系统源码 资源类型:程序源代码 源码说明: 使用ASP.NET写的三层架构博客系统 带SEO优化 完整代码 适合学习使用 适合人群:新手及有一定经验的开发人员

    MVC三层架构源代码

    **MVC三层架构源代码详解** MVC(Model-View-Controller)模式是一种常见的软件设计模式,广泛应用于Web开发中,以实现业务逻辑与用户界面的分离,提高代码的可维护性和可重用性。柳老师的这个MVC源代码提供了一个...

    J2EE中MVC三层架构的实现

    3. **J2EE的MVC架构(持久层+JSP+Servlet)**: - 模型(Model):负责处理业务逻辑和数据操作,通常包括实体类(Entity)和数据访问对象(DAO)。 - 视图(View):JSP页面,负责数据显示和用户交互,只根据控制...

    C# .net mvc 三层架构 增删改查

    在.NET开发领域,C#与ASP.NET MVC框架的结合常用于构建高效、可维护的Web应用程序。本项目涉及的核心知识点...以上就是关于“C# .NET MVC 三层架构 增删改查”这个主题的详细解释,希望对你理解和实践Web开发有所帮助。

    基于MVC 加三层架构 EF数据框架 招聘网

    《基于MVC与三层架构的EF数据框架:构建招聘网站》 在当今信息化社会,招聘网站已经成为企业和求职者沟通的重要桥梁。本项目“基于MVC加三层架构的EF数据框架招聘网”旨在模拟拉钩网的功能,提供发布、浏览简历,...

    MVC三层架构——超市订单管理系统

    **MVC三层架构详解** MVC(Model-View-Controller)是一种常见的软件设计模式,尤其在Web开发领域广泛应用。在超市订单管理系统中,MVC架构能够有效地分离业务逻辑、数据处理和用户界面,提高代码的可维护性和复用...

    基于mvc的三层架构例子

    **基于MVC的三层架构详解** MVC(Model-View-Controller)模式是一种常见的软件设计模式,广泛应用于Web开发中,以实现业务逻辑、数据处理和用户界面的分离。在这个三层架构的例子中,我们将深入探讨每一层的作用...

    MVC与三层架构

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

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

    本程序一个基于三层架构的MVC模式应用的完整示例项目源码,基于Asp.net 3.5开发, 结构更简洁,提供更多有效的示例源码参考。 方便用户更好的理解和使用该架构进行开发,配合动软.Net代码生成器,可以使开发效率...

Global site tag (gtag.js) - Google Analytics