崔岢邓威(上海蓝星聚甲醛有限公司,上海200000)
摘要:目前软件开发规模不断扩大,软件的后期维护工作量也在不断加大,软件的架构模式不在是单机程序而是基于网络的c/s、b/s的方式。在这种情况下,传统的单人开发模式已不适应现在的软件开发方向。MVC是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。控制器(Controller):负责转发请求,对请求进行处理;视图(View):由界面设计人员进行图形界面设计;模型(Model):程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。本文通过借鉴MVC的架构思想,对程序设计与管理提出实现方式。在程序设计上我们应本着控制器,视图,模型三大块进行实现;在程序管理上需要界面设计人员完成视图,程序开发人员完成模型,项目核心人员完成控制器。通过上述的实现确保程序开发分工明确,后期维护思路清晰,最终实现程序的高效开发与管理。
关键词:MVC;控制器;视图;模型;软件工程
1问题的提出
目前软件开发规模不断扩大,软件的后期维护工作量也在不断加大,软件的架构模式不再是单机程序而是基于网络的c/s、b/s的方式。在这种情况下,传统的单人开发模式已不适应现在的软件开发方向。另外,用户体验在软件开发设计上也越来越受到用户的重视,对软件的推广骑着举足轻重的作用。如何提高编程效率、如何提高软件的应用性、如何提高软件的管理水平是我们现在面临的主要问题
2MVC思想
MVC是XeroxPARC在二十世纪八十年代为编程语言Smalltalk发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式。MVC模式是“Model-View-Controller”的缩写,中文翻译为“模式-视图-控制器”。MVC应用程序总是由这三个部分组成。
随着网络应用的快速增加,MVC模式对于Web应用的开发是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰设计框架,为你的软件工程提供规范的依据。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求,在许多设计中在这里应用了适配器模式。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器或者说是选择器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把视图层传过来的用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受来自由Controller处理选择转发视图请求的数据,并将处理结果通过Controller转发或直接返回给视图层。业务模型的设计可以说是MVC最主要的核心。在J2EE平台中主要是由EJB和JavaBean来实现。对于开发人员来说可以不管视图的设计,这样就可以专注于业务模型的设计。
3实现方式
结合实践笔者认为采用下列方式比较适合企业内部的开发。
一是flash+xml+Ascript+webservice方式,通过该方式我们实现了钻井运行进度图、厂机关大屏幕的开发。界面设计人员(view)通过flash及图形设计工具进行界面的设计,编程人员(Model)通过Ascript+webservice实现内部逻辑,项目核心人员(Controller)通过xml实现双方的通信。
二是silverlight+c#+json方式,通过该方式我们实现了射孔通知单程序。界面设计人员(View)主要使用silverlight,编程人员(Model)通过c#实现内部逻辑,项目核心人员(Controller)通过json实现双方的通信。
三是Html+css+javascript+webservice+xml方式,今年我们计划在完井管理系统中应有,界面设计人员(View)主要使用Html+css,编程人员(Model)通过javascript+webservice实现内部逻辑,项目核心人员(Controller)通过xml实现双方的通信。该方式最大的好处是手机端和微机端可公用一套代码,极大地简化编程的工作量。
4MVC的不足体现在以下几个方面
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4)目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。
5结论
通过具体的实践,我们认为在程序设计上我们应本着控制器,视图,模型三大块进行实现;在程序管理上需要界面设计人员完成视图,程序开发人员完成模型,项目核心人员完成控制器。通过上述的实现确保程序开发分工明确,后期维护思路清晰,最终实现程序的高效开发与管理。当然使用MVC思想需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。开发一个MVC架构的工程,将不得不花费相当可观的时间去考虑如何将MVC模式运用到应用程序中,同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。另外,由于MVC模式将一个应用程序分成了三个部件,所以这意味着同一个工程将包含比以前更多的文件。
参考文献
[1]MVC框架[EB/OL].http://baike.baidu.com/view/31.htm.
[2]Flex与JSON及XML的互操作[EB/OL].http://www.infoq.com.
[3]ActionScript3天地会[EB/OL].http://bbs.actionscript3.cn.