MVC架构开发

MVC是一种软件开发架构,它包含了很多的设计模式,最为密切的有以下3种:Observer (观察者模式)、Composite(合成模式)和Strategy(策略模式)。本节主要论述了MVC架构的原理、优缺点以及MVC所能为Web应用带来的好处。
1.什么是MVC架构
模型(Model)-视图(View)-控制器(Controller)即为MVC,MVC是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件架构模式,至今已被广泛使用。模型-视图-控制器模式是一个有用的工具箱,它有既存在优点又存在缺点。
2.MVC工作原理
MVC是一个设计模式,它使应用程序的输入、处理和输出强制性分开,使得软件可维护性、可扩展性、灵活性以及封装性得到提高。使用MVC应用程序被分成三个核心部件:M(模型)、V(视图)、C(控制器)。模型是所有的商业逻辑代码片段所在。视图表示数据在屏幕上的显示。控制器提供处理过程控制,它在模型和视图之间起连接作用。控制器本身不输出任何信息和做任何处理,它只负责把用户的请求转成针对Model的操作,和调用相应的视图来显示Model处理后的数据。三者之间关系如图1所示。
 

图1MVC架构的关系图
MVC(Model-View-Controller)把系统的组成分解为M(模型)、V(视图)、C(控制器)三种部件。下面分别对这三个核心部件介绍一下:
? 模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
? 视图
视图是用户可以看到并与之交互的界面。视图就是由HTML元素组成的界面,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash、XHTML、XML/XSL、WML等一些标识语言和Web Services等。
如何处理应用程序的界面变得越来越有挑战性。MVC有一个突出的优点是能为应用程序处理很多不同的视图,在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是本地储存,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
? 控制器
现在总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
3.为什么要使用 MVC架构
ASP.NET提供了一个很好的实现这种经典设计模式的环境。程序人员通过在ASPX页面中开发用户接口来实现视图,控制器的功能在逻辑功能代码(.cs)中实现,模型通常对应系统的业务部分。在ASP.NET中实现这种设计而提供的一个多层系统,将数据(模型)从对其操作的动作(控制器)分离出来可以设计一个与后台存储数据无关的系统,就MVC结构的本质而言,它是一种解决耦合系统问题的方法。
在ASP.NET中编写MVC模式具有极其良好的可扩展性。它可以轻松实现以下功能:
? 实现一个模型的多个视图
? 采用多个控制器
? 当模型改变时,所有视图将自动刷新
? 所有的控制器将相互独立工作
这就是MVC架构的好处,只需在以前的程序上稍作修改或增加新的类,即可增添程序的功能。以前开发的类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。
下面介绍一下使用MVC架构的优点:
? 提高代码重用率
最重要的一点是多个视图能共享一个模型,无论用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于已经将数据和业务规则从表示层分开,所以可以最大化的重用代码。
? 提高程序的可维护性
因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变数据层和业务规则。例如,把数据库从SQL Server移植到Oracle,只需改变模型即可。一旦正确的实现了模型,不管数据来自哪里,视图都会正确的显示它们。MVC架构的运用,使得程序的三个部件相互对立,大大提高了程序的可维护性。
? 有利于团队开发
在开发过程中,可以更好的分工,更好的协作。有利于开发出高质量的软件。良好的项目架构设计,将减少编码工作量 :采用MVC结构和代码生成器,是大多数Web应用的理想选择。部分模型(Model)和存储过程一般可用工具自动生成。控制器(Controller)比较稳定,一般由架构师(或经验丰富程序人员)完成;那么整个项目需要手动编写代码的地方就只有视图(View)了。在这种模式下,个人能力不是特别重要,只要懂点语法基础的人都可以编写,无论项目成员写出什么样的代码,都在项目管理者的可控范围内。即使开放项目途中人员流动,也不会有太大问题。在个人能力不均衡的团队开发中,采用MVC开发是非常理想的。
另外,MVC架构可以实现一个模型、两个视图和一个控制器的程序。下面将讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。
 
图2  双视图MVC架构
同样也可以实现其它形式的MVC。例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC模式实现的应用程序具有极其良好的可扩展性,是ASP.NET面向对象编程的未来方向。
4.MVC的缺点
MVC的缺点体现在以下几个方面:
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4)目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

                                                                                                                                                                   ——摘自《C#编程词典》

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小禾斗斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值