改进的MVC设计模式的研究与应用*

2015-01-09 03:53刘红霞陆文迪
计算机工程与科学 2015年9期
关键词:设计模式中间件视图

刘红霞,陆文迪

(南京工业大学计算机科学与技术学院,江苏 南京 211816)

改进的MVC设计模式的研究与应用*

刘红霞,陆文迪

(南京工业大学计算机科学与技术学院,江苏 南京 211816)

分析了.NET平台下传统MVC设计模式存在的数据处理能力低、代码复用率低等缺陷,结合中间件和页面局部刷新技术,提出了一种改进的MVC设计模式。并根据改进的MVC设计模式,设计了钢铁企业质量异议换货系统。系统运行表明,改进的MVC设计模式的使用,有效增强了系统的鲁棒性,平衡了层间耦合性,并提高了代码的复用率和系统开发效率。

MVC;中间件;异步刷新;质量异议换货

1 引言

随着信息技术和网络技术的不断飞跃,办公自动化系统作为解决企业日常管理规范化、增加企业可控性、提高企业运转效率等问题的有效手段,已成为各种应用型研究开展实施的主要对象[1]。在办公自动化系统实现的过程中,常常会为满足大量相似但不完全相同的业务需求而不得不做很多重复性的工作,使得系统的结构变得复杂,难以维护和扩充。

MVC设计模式在目前是一种应用比较普遍的设计模式,是实现系统职能分工的典范[2]。经过不断的尝试和检验,它已经成为开发Web应用最合适的模板。MVC设计模式实现了系统各层间的分离,在一定程度上降低了软件系统的开发周期和维护成本,使系统具有较高的灵活性、伸缩性和可扩展性[3]。但是,典型的MVC也存在缺陷:传统开发方式导致了代码复杂、复用率低,客户端对服务器端数据的低效率访问影响了系统的性能。

本文针对MVC设计模式存在的不足,使用中间件和页面局部刷新等技术对MVC进行改进,并以改进的MVC设计模式为基础,设计和开发了钢铁企业的质量异议换货系统。

2 MVC设计模式

MVC设计模式适用于大型可扩展的Web系统的开发。根据功能的不同,MVC模式将一般的软件系统划分为三个部分,即模型(Model)-视图(View)-控制器(Controller),如图1所示。

Figure 1 MVC model

模型是整个MVC中的核心部分,封装了与应用问题中业务逻辑相关的数据以及数据的操作过程。模型一方面被控制器使用,完成应用程序的行为改变,另一方面为视图的状态查询提供相应数据。视图是MVC模式下面向用户的显示界面。视图将用户数据传送给模型处理,并由控制器控制,从模型处获得更新后的数据进行显示。控制器是视图和模型间的桥梁,用于处理用户的操作请求。它从视图获取用户的输入并决定调用相应的模型构件去处理。

MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户[4]。

这样划分MVC,能有效地区分显示数据和存储数据的功能模块,使得页面、数据和业务逻辑之间的耦合度降低。但是,MVC也存在一定的缺陷:在系统开发过程中,存在许多共性业务需求,相似功能模块的开发往往会因为人员素质的不同而破坏代码的统一性,使代码逻辑复杂,复用率低;视图和模型的交互基于请求/响应的模式,这导致更新页面中的数据必须对页面进行整体刷新,造成视图对未变化数据的不必要的频繁访问,降低了访问效率,使系统处理数据能力大大降低。

3 改进MVC设计模式

3.1 改进MVC架构设计

本文针对传统MVC设计模式存在的代码复用率低、数据处理能力低的缺陷,设计了改进的MVC,其在视图和控制器、控制器与模型的交互中应用了中间件技术,并在视图层中采用了页面局部刷新技术,其总体框架如图2所示。

中间件是基础软件的一大类,属于可复用软件范畴。中间件处于系统软件(操作系统、网络软件和数据库)之上,应用软件之下,通过提取某些具体应用中的共性业务需求,将相关解决方案构件化,为处于上层的应用软件提供运行与开发的环境,并通过简单的客户化定制,帮助用户灵活、高效地开发应用软件。在改进的MVC设计模式中使用中间件技术,可以把系统开发过程中相似的功能模块用相应的中间件来替代,使系统各层间的耦合度进一步降低,提高代码复用率[5,6]。

页面局部刷新技术Ajax的使用,可以使用户请求与服务器响应异步化,实现无刷新更新页面。Ajax是多种网页技术的结合,主要包括HTML、Javascript、DOM等。Ajax使用Javascript中的XmlHttpRequest对象发送用户请求并获得控制器的响应,在不重新载入整个页面的情况下通过Javascript操作DOM来实现页面局部更新和异步请求[7],所以系统中页面导航、数据校验等工作可以交给Ajax来执行。同时,不是所有的业务逻辑都交由服务器进行处理,客户端负责处理一些简单的数据校验和数据编辑等工作。把原本由控制器和模型完成的工作转移到客户端来完成,利用客户端闲置的处理能力来进行处理,减轻了服务器的负担[8,9]。

3.2 改进MVC处理流程

改进的MVC设计模式的时序图如图3所示。用户通过浏览器发送HTTP请求传递给视图和Ajax,Ajax将请求变量数据存储在JavaScript变量中。如果客户端能够直接处理或不需要进行刷新操作,Ajax则直接进行处理,并更新视图,将结果返还给用户,而不能直接被客户端处理必须由后台服务器才能完成的操作,Ajax就将请求发送给控制器,同时通过XML或视图将实体数据也传输给控制器,控制器根据接收的用户请求,自动判断需要调用的中间件和模型来进行操作。当模型接收到请求任务后,将请求数据分发给相应的业务逻辑模块,由一个或多个业务逻辑模块在服务器端访问相应数据库资源去完成处理。当处理完成后,控制器把业务逻辑模块返回的数据通过中间件选择合适的视图来进行数据格式化,最终把页面呈现给用户。

Figure 3 Improved MVC architecture sequence diagram

4 改进MVC设计模式的应用

以下给出基于改进MVC设计模式的质量异议换货系统在某大型钢铁企业办公自动化系统中的应用实例。系统以Windows Server 2003作为服务器端,Visual Studio 2008和Microsoft SQL Server 2008作为开发工具,使用了ASP.NET、ADO.NET、Ajax和SOAOffice中间件等开发技术进行系统开发。

4.1 系统流程设计

作为企业办公自动化系统的一部分,质量异议换货系统主要用来管理企业中产品由于质量问题产生的换货流程,并对换货流程进行全程的监控。系统流程如图4所示。

首先,作为发起人,技术质量科的质量员提出换货处理意见并填写换货处理单,由质量科领导及厂部领导审核;审核通过后,生产科科长安排科员发起换货指示;生产科科员根据实际换货处理情况判定是否需要原料车间参与换货流程,若需要则同时通知原料车间及产品管理室,否则只通知产品管理室;原料车间及产品管理室负责人对换货处理意见进行回复,并由生产科科员进行审核;生产科科员对两个部门的回复进行审核,若同时通过两个回复则流程继续,否则回退给相应部门重新处理;生产科科长对换货流程进行结案后,由技术质量员填写考核意见,交由厂部领导审核,通过后最终由综合科对换货处理单进行归档,方便各部门用户对换货处理单的查询。

Figure 4 Flow diagram of quality objection replacement

4.2 系统框架设计

质量异议换货系统的核心是换货处理单的流转。传统的开发方式一般使用硬编码并结合COM组件调用Office来实现表单功能,导致系统编码复杂,容易出现Office死进程等缺陷。使用改进的MVC设计模式,并结合SOAOffice中间件和Ajax技术来进行系统设计,能有效解决以上问题。系统的总体框架如图5所示。

Figure 5 System architecture

SOAOffice中间件是Office中间件的一种,提供简洁的调用接口供应用程序访问控制Office文档及其内容[10]。控制器通过调用SOAOffice的视图组件打开Excel格式的换货处理单模板并在视图中显示。同时,SOAOffice把原本要在服务器端运行的Office运算量交给了客户机,消除了服务器端运行Office的风险。在系统中,业务逻辑和访问服务主要在服务器端处理,通过SOAOffice数据组件,控制器调用模型在服务器端的方法或服务,将用户输入的数据批量导入数据库,从而避免了数据的重复录入,提高了数据存取的效率。

4.3 改进MVC设计模式应用评价

分别使用传统MVC设计模式和改进MVC设计模式对质量异议换货系统中核心模块进行开发,统计出各自代码复用情况,如表1所示。中间件技术在改进MVC中的使用,使系统开发过程中可复用的代码显著增加,同时降低了代码总行数,提高了系统的代码复用率。

Table 1 Comparative table of code reuse situation表1 代码复用情况对比表

5 结束语

MVC设计模式在目前是一种应用比较普遍的设计模式,本文针对传统MVC设计模式存在的缺陷,提出一种新的融合MVC的设计思想、页面异步刷新技术和中间件技术优点的模式,并成功地将此种架构模式应用于企业质量异议换货系统的架构设计中。项目实践表明该设计模式提高了系统的开发效率和代码的可复用率,并且降低了各层间的耦合性,为其他具有同种结构的应用系统的研发提供了一定的参考。

[1] Han Hong-bang. The design of online document signing system based on .NET[J]. Technology Bulletin of Science and Technology,2012,28(12):107-109.(in Chinese)

[2] Zhao Wei,Wang Zhi-hua,Zhou Bing. Novel architecture pattern based on .NET and MVC[J]. Computer Engineering and Design,2012,33(7):2646-2651.(in Chinese)

[3] Zhao Wei,Wang Zhi-hua,Zhou Bing. Design and implementation of e-ERP based on MVC[J]. Computer Applications and Software,2013,30(2):106-109.(in Chinese)

[4] Lin Qing,Zhu Cui-miao,Zheng Guang-cheng,et al. Study on MVC design pattern in ASP.NET[J]. Computer Engineering and Design,2008,29(1):106-109.(in Chinese)

[5] Wang Wen,Chen Zhi-wei,Wang Shu-feng. The design and realization of online editing text management system based on component technology[J]. Machine Design and Manufacturing Engineering,2012,41(23):89-91.(in Chinese)

[6] Liu Yi-xuan,Li Guang-yao,Liu Xiao-jing,et al. Design and implementation of online endorsement process based on ASP.NET [J]. Computer Engineering and Design,2010,31(3):525-528.(in Chinese)

[7] Tang Yong-rui ,Zhang Da-min. The research and design of the information system based on Ajax and MVC pattern[J]. Application of Electronic Technique,2014,40(2):128-130.(in Chinese)

[8] Yang Yan-lan, Jin Xiao-xue, Ye Hua. ASP.NET AJAX framework and its application in web development[J].Computer Applications and Software,2011,28(6):195-198.(in Chinese)

[9] Ni Jun-hong,Zhang Li,Zhang Miao,et al. Design and implementation of power communication alarm system based on Ajax and MVC[J]. Computer Applications and Software, 2012,30(8):226-227.(in Chinese)

[10] La Fen-hua,Chen Hong-xing,Li De-yu,et al. Contract generation and data extraction program for Web environment based on SOAOffice middleware[J]. Journal of Computer Applications,2012,32(S1):73-76.(in Chinese)

附中文参考文献:

[1] 韩红帮.基于.NET技术的网上公文签收系统设计[J].科技通报,2012,28(12):107-109.

[2] 赵伟,王志华,周兵.基于.NET技术和MVC的新架构模式[J].计算机工程与设计,2012,33(7):2646-2651.

[3] 赵伟,王志华,周兵.基于MVC的e-ERP系统的设计与实现[J].计算机应用与软件,2013,30(2):106-109.

[4] 林庆,朱翠苗,郑广成,等.基于ASP.NET的MVC设计模式的研究[J].计算机工程与设计,2008,29(1):106-109.

[5] 王文,陈志伟,王树锋.基于中间件的文档在线编辑管理技术的实现[J].中国制造业信息化,2012,4(23):89-91.

[6] 刘宜轩,李光耀,刘晓静,等.ASP.NET环境下的网上审批流程的设计及实现[J].计算机工程与设计,2010,31(3):525-528.

[7] 唐永瑞,张达敏.基于Ajax与MVC模式的信息系统的研究与设计[J].电子技术应用,2014,40(2):128-130.

[8] 仰燕兰,金晓雪,叶桦.ASP.NET AJAX框架研究及其在Web开发中的应用[J].计算机应用与软件,2011,28(6):195-198.

[9] 尼俊红,张丽,张淼,等.基于Ajax和MVC的电力通信告警系统的设计实现[J].计算机应用与软件,2012,30(8):226-227.

[10] 剌奋华,陈红星,李德玉,等.Web环境下基于SOAOffice中间件的合同生成与数据抽取方案[J].计算机应用,2012,32(S1):73-76.

刘红霞(1964-),女,江苏江阴人,博士,副教授,研究方向为工业综合自动化研究与实现。E-mail:lhx_cec@126.com

LIU Hong-xia,born in 1964,PhD,associate professor,her research interests include research and realization of integrated automation of industry.

Research and implementation of an improved MVC design pattern

LIU Hong-xia,LU Wen-di

(College of Computer Science and Technology,Nanjing Tech University,Nanjing 211816,China)

The traditional MVC design pattern on .NET platform has defects of defects of low data processing capability and low code reuse. Using the middleware and asynchronous refresh techniques, we propose an improved MVC design pattern. Based on the improved MVC, we design a quality objection replacement system for iron and steel enterprises. System operation indicates the improved MVC effectively enhances the robustness of the system, balances the coupling between layers and increases the code reuse rate and the efficiency of system development.

MVC;middleware;asynchronous refresh;quality objection replacement

1007-130X(2015)09-1688-04

2014-11-17;

2015-01-27

TP311.53

A

10.3969/j.issn.1007-130X.2015.09.015

通信地址:211816 江苏省南京市南京工业大学电子与信息工程学院

Address:College of Computer Science and Technology,Nanjing Tech University,Nanjing 211816,Jiangsu,P.R.China

猜你喜欢
设计模式中间件视图
“1+1”作业设计模式的实践探索
三维协同设计模式下的航天项目管理实践与展望
交通机电工程设计模式创新探讨
RFID中间件技术及其应用研究
基于VanConnect中间件的设计与开发
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
中间件在高速公路领域的应用