mvc框架范文

时间:2023-03-10 17:43:10

mvc框架

mvc框架范文第1篇

关键词:;MVC;模式;框架

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)19-5160-03

MVC Design Pattern and MVC Framework Research

LU Jun-wei, CHANG Lin, CHEN Yun-kun

(Orient Science & Technology College of Hunan Agricultural University, Changsha 410128, China)

Abstract: After the framework like Model 2、Ruby on Rails prevailed in the market for many years, Microsoft began to spread MVC Framework for its powerful function and distinct advantage. Based on traditional MVC Design pattern, this paper explains the complex patterns in inner structure, and introduces the operation mechanism and characters of MVC Design pattern. And it also summarizes the relationship between framework and model, combined with MVC Framework.

Key words: ; MVC; design pattern; framework

在面向对象设计思想还未成熟的阶段,图形化程序设计是基于面向过程开发,常常围绕着事件驱动的用户界面来组织,这种开发方式导致的直接后果就是生成 “意大利面条”(Spaghetti)代码。其数据处理、程序功能与显示代码等部分完全交错混杂,严重降低了程序的可扩展性,增加了程序开发与维护的难度[1]。随着开发技术的发展, MVC模式作为复合模式的代表之作,其含义和用途变得更加广泛。不仅可以用于组件的构造,也可用于类似于信息管理系统等大型面向对象系统的软件设计,甚至连中小企业的门户网站开发都随处可见。因此,Model 2、Ruby on Rails等框架开始大行其道,并得到开发人员的狂热追捧。美国微软公司也不失时机的推出基于.NET开发平台的 MVC框架,更是极大的促进了MVC模式的应用发展。本文重点介绍了MVC模式与 MVC框架的结构、特点以及两者间的关系。

1 MVC模式

1.1 MVC模式的概述

在Smalltalk-80中,类的模型-视图-控制器(Model-View-Controller)三元组(MVC)被提出用于构建桌面程序中的图形用户界面(Graphical User Interface,GUI)。随着开发技术的发展,开发人员不断提炼经验使之成为了一种被广泛应用的开发模式。其执行过程如图1所示:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。由执行过程分析,MVC模式由三类对象所构建:视图是负责呈现模型的对象,通常直接从模型中获取所需显示的状态与数据;模型对象则持有所有的数据、状态和业务逻辑;控制器对象是接收请求并解读其对模型的操作,从而控制业务对象去完成请求。

MVC模式将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性;将数据(模型)从对其操作的动作(控制器)分离,可设计与数据存储无关的系统;其本质就是解决耦合系统问题的方法[2]。MVC模式通过强制性的把输入、处理、输出分离开,并且描述了不同部分的对象之间的通信方式,使它们不必卷入彼此的数据模型和方法模型中,使程序结构变得清晰而灵活。

1.2 MVC模式的分解

MVC模式作为复合模式的代表,其自身就是由多个模式共同组成的。随着基于MVC模式的Web开发被广泛应用,MVC模式也不断在发生演变。目前,MVC模式可划分为“主动MVC”模式与“被动MVC”模式。两者的区别在于“主动MVC”模式的实现方式是视图不需要等待控制器的更新消息才去获取模型数据并改变状态,而是通过向模型注册,以接收模型的状态改变通知或主动询问模型是否状态改变。而那种等待控制器通知的方式是“被动MVC”模式的实现方式。

在“主动MVC”模式中模型利用“观察者”(Observer)模式又叫做“-订阅”(Publish-Subscribe)模式,采用了一种一对多的依赖关系,实现了当状态改变时相关对象将持续更新。使用观察者模式可以让模型完全独立于视图和控制器。同一个模型可以使用不同的视图,甚至可以同时使用多个视图;视图和控制器则实现了经典的“策略模式”(Strategy),视图是一个对象,可以被调整使用不同的策略,而控制器提供了策略。视图只关心系统中可视的部分,对于任何界面行为,都委托给控制器处理。使用策略模式也可以让视图和模型之间的关系解耦,因为控制器负责和模型交互来传递用户的请求。对于工作过程视图毫不知情;视图内部使用“组合模式”(Composite)来管理显示组件,显示包括了窗口、面板、按钮、文本标签等。每个显示组件如果不是结合节点,就是叶节点。当控制器告诉视图更新时,只需告诉视图最顶层的组件即可,组合会处理其余的事情[3]。

“被动MVC”模式与“主动MVC”模式的区别在于视图与模型完全分离(如图 2所示),模型仅被视图和控制器直接或间接的使用。控制器通知视图更新数据并显示,视图也仅在得到控制器通知时才去模型获取数据,视图并不会订阅或监视模型的更新,所有模型数据的变化都交由控制器负责处理,与此同时,控制器还可以包含对视图的渲染(Rendering)逻辑。

1.3 MVC模式的优势与不足

MVC模式的优势显而易见,能有效的分离稳定的代码和易变的代码,使数据、业务和表现之间层次分明、结构清晰,降低层与层之间的依赖,提高层次间逻辑的复用。有利于约定开发规则及范围,执行标准化操作。使得开发人员与设计人员只需关注整个结构中的特定层,有助企业进行并行开发提高效率。其执行机制使得一个模型可以建立和使用多个视图,能确保所有相关视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。并且视图与控制器具有良好的可接插结构,可以根据需求动态的打开或关闭、甚至在运行期间进行视图和控制器对象的替换。由于模型是独立于视图的,因此,模型的可移植性非常强,只需要修改相关的视图和控制器,就可以把一个模型独立地移植到新的平台工作[1,4]。但是,将MVC模式应用于不同开发环境中或用户有特殊需求时,也反映出以下几个方面的不足[3-4]:

1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能导致级联修改产生过多的更新操作,相对简单或人员有限的开发反而降低了开发和维护的效率;

2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但在多层架构下仍属于表示层(UI Layer),两者间必然存在联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍两者间的独立重用;

3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

2 MVC 框架

2.1 MVC框架的概述

2007年12月10日以社区技术预览版(Community Technology Preview,CTP)的形式首次推出了 MVC框架的,历经九个版本于2009年3月17日了该框架的1.0正式版,目前,仍在不断的完善与扩展其功能,最新版已更新到 MVC 2.0预览版。相对 MVC 1.0版的改善主要表现在区域化支持(Areas)、强化验证功能、强类型UI辅助方法、UI辅助方法模板化等方面。新特性促进开发人员将工作重点放在业务需求的分解和业务逻辑的设计上,简化和缩短枯燥而又乏味的编码实现过程。 MVC彻底改变了使用微软平台的Web开发者,全新框架更加重视纯净的架构,设计模式的运用以及可测试的能力,以期将所有代码的可控性还原给开发者。随着 MVC框架的出现,加之其自身也以微软公共授权(Microsoft Public Licenses,MS-PL)协议[5]公开了源代码,因此,使得MVC模式被迅速广泛地应用于大型可扩展的Web项目开发中。

2.2 MVC框架的功能

MVC注重应用程序的任务分离,易测性以及支持测试驱动开发。其框架是基于接口的核心契约形式,并且以模拟(Mocking)对象模仿应用程序中实际对象的行为进行测试。单元测试无需在内进行,可以采用其他独立、高效的单元测试框架(NUnit、MS Test、Unit等)。在 Web Forms中测试只能在应用程序及数据库已经部署在服务器上以后才能进行,而在 MVC中任何用户的行为都无需部署就能进行单元测试。

该框架具有很强可扩展和拔插能力,其组件设计都能容易的被替换或定制。可拔插的架构也可以通过使用其他框架(Unity、Castle Windsor、等)更容易实现依赖注入(Dependency Injection,DI)模式。

MVC包含一个功能强大的URL映射组件,允许你创建易于理解和便于搜索的URL的应用程序。URL并不需要包含文件名扩展,并且设计为有利于搜索引擎优化(Search Engine Optimization,SEO)和表现状态传输(Representational State Transfer,REST)的URL命名模式。

由于 MVC是基于技术MVC模式的实现,因此,依然支持使用现有的 Web Forms功能和各类页面,唯一不同之处就是不再具有视图状态(ViewState)属性或页面生存周期。开发人员还能完全控制HTML的输出,没有注入任何额外的HTML代码到所呈现的页面内,不会像 Web Forms那样以注入方式自动生成与ViewState、Resources等相关的冗余代码。

2.3 MVC框架的优势

MVC框架与 Web Forms框架是两种平行技术,而这两种技术体现的是一种互补而非取代,并且是微软今后同时发展的Web开发技术。因此, MVC框架除了具有MVC模式自身所具有的优劣外,其应用优势主要表现在以下三个方面:

1)在层次方面,通过将应用程序分为了模型、视图和控制器,使得在管理复杂性方面更加的简单。每个开发人员都能专注模式下的某个组件的开发,更加容易的进行平行开发。

2)在开发方面,为测试驱动开发(Test-Driven Development,TDD)、模拟对象、单元测试提供了更好的支持。TDD先写测试程序,然后再编码使其通过测试。因此,在测试的保护下,通过去除冗余和重复的代码,提高代码重用性,实现对质量的改进。由于 MVC框架不适用视图状态或者基于服务器的表单,对于那些想要完全控制应用程序行为的开发人员来说,MVC框架是很理想的,而且生成的页面体积很小。

3)在扩展方面,对于第三方Web应用程序来说,能得到良好的运作,并能够对应用程序的行为提供更高层次的控制。包括与客户端JavaScript框架集成(如JQuery、ExtJS等),提高人机交互的友好度以及可视化效果。

3 框架与模式的关系

3.1 框架的定义

框架(Framework)既不是工具包,也不是类库,更不是现成可用的应用系统。框架是一个半成品,需要开发人员进行二次开发实现具体功能的应用系统。框架构成了通用的、具有一般性的系统主体部分,二次开发人员如同搭积木一样,根据具体业务,完成特定应用系统中与众不同的特殊部分。在参考文献[3]中对框架的定义是一组相互协作的类(Class),对于特定的一类软件,框架构成了一种可复用的设计。软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。其目的是为了在相同或近似领域内新项目的开发过程提供一种规范化、标准化操作,在框架的基础上根据用户特定需求进行开发和调整。对于开发过程而言,不仅提高软件质量,而且降低开发成本,还缩短开发周期。

依照框架的使用和扩展方式可划分为黑盒框架和白盒框架两大类。黑盒框架通过构件或类的组合来实现重用与扩展,白盒框架则使用类的继承机制来支撑。白盒重用需要对框架结构有很好的理解,能生成紧耦合系统。黑盒重用则不注重对框架结构了解,能产生松耦合系统。但是,具体的框架实际上都是灰色的,是可继承和可组合方式的结合。

3.2 模式的定义

模式(Pattern)的概念最早应用于建筑领域,八十年代中期其思想引入到软件领域。模式可分为三个部分:首先是周境(Context,也称上下文),指模式发生作用的环境;其次是动机(System of Forces),指问题或预期的目标;最后是解决方案(Solution),指平衡各动机或解决问题的一个构造或配置。模式既是一个事物(Thing)又是一个过程(Process),每个模式描述了一个在特定周境下不断重复发生的问题,以及针对该问题的解决方案[4]。

模式的目标是把共通问题中的不变部分和变化部分分离出来,不变的部分就构成了模式。软件模式是复用软件设计方法、过程管理经验的有力工具。通过模式的使用,有利于在复杂的系统中产生简洁、精巧的设计。在不同层面考虑问题的时候就形成了不同问题域上的模式,根据处理问题的粒度不同,软件模式从高到低可分为架构模式(Architectural Pattern)、设计模式(Design Pattern)以及实现模式(Implementation Pattern)三个层次。架构模式是模式中的最高层次,描述软件系统里的基本的组织结构或纲要,通常将多个事先已定义职责的子系统通过约定的法则或指南组织在一起。因此,架构模式可以分解成多个设计模式的联合使用,MVC模式也属于架构模式的层次;设计模式是模式中的第二层次,用来处理程序设计中反复出现的问题(如工厂模式、观察者模式等);实现模式是最低也是最具体的层次,处理具体到编程语言的问题(如命名规则等)。

3.3 框架与模式之间的关系

框架和模式在软件设计与开发过程中是两个完全不同的研究领域。从应用领域上分,框架是整个应用的体系结构,模式是一个设计问题的解决方法,同一模式可应用于不同的框架或由不同的程序所实现;从内容上分,模式仅是一种抽象的设计思想,能通过不同的开发语言实现。框架则偏重于技术实现,是设计和代码的一个混合体,开发人员可以用各种开发技术对框架进行扩展,进而形成完整的、个性化的应用程序;从应用范围上分,模式比框架更容易移植,框架一旦设计成形,虽然还没有构成完整的一个应用,但是以其为基础进行应用的开发显然要受制于框架的实现环境,而模式是与开发语言无关的,所以可以在更广泛的异构环境中进行应用。

4 结束语

综上所述,模式使得软件开发过程更加规范和精炼,能产生易复用、易扩展、易维护的程序代码。但也不要拘泥于模式的生搬硬套,不要为了设计模式而设计模式,要结合应用的需要考虑使用设计模式的必要性。在应用开发的过程中,只要能有效解除对象之间耦合性的方法就值得采用设计模式。框架作为实现模式的一种载体,同一模式可适用于不同框架,各框架之间存在的只是开发技术上的个体差异。由此可见,框架既能有效“约束”开发人员的开发方式,也能“强迫”开发人员按照一种“更优架构”的方式来设计和开发应用程序。而模式是软件的知识体,提升了框架的设计水平。

参考文献:

[1] 任中方,张华,闫明松,等.MVC模式研究的综述[J].计算机应用研究,2004(10).

[2] Tao Y ponent-vs application-level MVC Architecture[J].IEEE,2002,16(1):1385-1396.

[3] Gamma E,Helm R,Johnson R,et al.Design Patterns--Elements of Reusable Object Oriented Software[M].Pearson Education,1995.

[4] 甄镭与设计模式[M].北京:电子工业出版社,2005.

mvc框架范文第2篇

关键词:Web前端;MVC;意义

前言:Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息。然而随着科学技术的不断进步,Web前端开发形式上变得更为复杂,但是其功能方面也逐渐实现了与用户间的相互交流。以下就是对Web前端MVC框架意义的详细阐述,望其能为现代背景下Web前端开发技术的可持续发展提供有利的文字参考。

一、传统MVC模式基本概念分析

在传统MVC模式中其应用被划分为模型层、视图层、控制层三个层次,而经过大量实践调查表明,不同层次在系统实际运行中承担着不同的职责。模型层在系统运行中的任务即为数据处理。且数据模型层也可通过数据访问的方式来获取自身所需信息,并优化数据整合,将其应用于业务包装中,为用户提供更为高质的服务体系。视图层在系统运行中的主要任务即为显示数学模型中处理的信息等。但是,由于视图层数据显示存在着针对性特点,因而在利用其进行数据显示时应前面掌握其特性。另外,视图层中功能的发挥需要基于数据模型来完成,因此在一定程度上限制了其应用领域。控制层在系统中的主要职能即为对系统中应用程序的合理控制,并在视图数据显示中出现问题时,对其问题的发生进行合理控制,且在事件控制后作出相应响应提醒相关技术人员。另外,在控制层事件处理中模型层也承担着协助的作用,即在控制层作出相应后,模型层要及时整合数据、信息,并合理更新视图层中所显示的数据[1]。

二、前端MVC框架

就目前的现状来看,前端MVC应用最为广泛的即Backbone.js,Ember.js、Angular.js等几种。这几种前端框架都是基于MVC完成的,但是经过大量的实验表明,每种框架处理问题的方式都存在着一定差异。Backbone.js与其它框架相比其优势在于可更好的解决系统应用中层次问题,进而为用户提供更为可靠的操作平台。其次,Backbone.js框架应用层中的视图层在模型数据修改后可及时对自身页面显示的数据进行修改,确保视图层与数据模型层数据的一致性。此外,Backbone.js框架还支持定位功能,即对其的应用可确保在系统实际运行中出现需处理的事件时,可及时通过定位的形式找到事件的源头,并对其进行有效解决。Ember.js框架其广泛应用于桌面开发中,且由于其界面设计存在着标准化的优势,因而得到了更多用户的亲睐。另外,其可协助MVC系统的运行,帮助其处理应用层中相应事件问题。此外,Ember.js还为用户提供了模板使用说明,促使其在对界面进行实际操作过程中可有效掌握魔板操作方法,避免不规范操作行为的发生。Angular.js源自于Google设计,其在一定程度上拓宽了应用层中的词汇使用范围,同时也在系统界面中增添了部分动态内容,便于用户界面操作行为的展开。

三、Web前端MVC框架的意义分析

(一)jQuery等库与前端MVC间的区别

jQuery等库与前端MVC间的区别主要表现在以下几个方面:第一,二者解决的问题存在着一定的差异,即jQuery主要应用于对代码、封装等问题的解决。而其也为系统实际运行提供了多种封装方法,由此稳固了代码结构的合理性设置,而前端MVC框架与jQuery等库在问题解决方面有所不同,其更加倾向于对程序组织方面问题的解决,进而推动系统中的程序运行逐渐趋于规范化。另外,前端框架为系统运行提供了一套规范化的问题解决方案,致使系统运行中出现相应问题时可及时参照方案对问题展开及时、有效的解决,且最终提高系统运行的稳定性;第二,jQuery的操作中心为DOM,而MVC框架的中心却为模型。因而MVC与jQuery相比其流程的变更更为及时,且也为现代工程师的代码编写提供了有利条件。另外,MVC框架解决了传统HTML源码处理中的问题,促使相关工作人员在实际工作开展过程中即可通过参照前端MVC框架中的规范化流程打通后端处理,提高系统中的整体运行效率[2]。

(二)Web前端MVC框架适用范围

近年来,Web前端MVC框架的开发意义逐渐引起了人们的关注,而从Web前端MVC框架的适用范围研究中即可看出其在系统运行中占着至关重要的位置。对于此,可以从以下几个方面入手分析:第一,从大量的实践中可以看出,Web前端MVC框架不适用于页面型产品中,造成此现象的原因主要归咎于此类产品主要依附于服务器来运作自身系统,因而在此背景下,jQuery等库会更好的满足其互动性需求,且最终导致Web前端MVC框架在页面型产品中无法发挥其自身效用;第二,在软件型产品,对于Web前端MVC框架的应用是非常必要的。首先由于软件型产品对数据操作能力的要求较大,因而若将Web前端MVC框架应用于软件型产品实际运行中,那么框架中的数据模型层会在一定程度上满足其数据操作需求,且会在系统实际运行中出现问题时,对数据展开及时的更新处理。其次,软件型产品中会涉及到大量的视图操作,但是由于jQuery等库无法完成高效率的操作行为,因而将Web前端MVC框架应用于其中,会在一定程度上更好的满足程序开发需求[3]。

结论:综上可知,Web前端MVC框架在程序开发中的应用有着一定的限制性特点,因而在Web前端MVC框架不断创新的背景下,相关开发人员在实际工作开展过程中应结合Web前端MVC框架的特性将其应用于程序开发中,提高系统运行的整体运行效率,同时促使开发产品具备自身独有特色。另外,为了确保Web前端MVC框架设计的可持续发展,要求相关技术人员应致力于架构与代码的研究,为其开发提供便利。

参考文献

[1]张文胜.基于MVCS模式的组件化手机Web前端的研究与应用[J].电子设计工程,2015,23(11):19-20.

mvc框架范文第3篇

关键词:MVC设计模型;Struts框架;Servlet;Jsp

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30789-02

Research of Struts Frame Work Based on MVC Design Pattern

XIA wei

(Bengbu College of Modern Education Technology Center, Bengbu 233000, China)

Abstract:Struts is an excellent framework based on MVC design pattern for Web applications. It separates view and business logic and increases reusability and flexibility of the code for Web development. This paper briefly analyzes the principle of Struts framework technology and the implementing technology for model, view and controller of Struts based on MVC design pattern. And through a demonstration examples Struts Framework MVC model approach.

Key words:Struts framework; MVC design pattern; Servlet; Jsp

1 引言

当前,SUN公司提出的J2EE (Java 2 Enterprise Edition)已经逐渐成为企业Web应用开发的标准,这当中的Servlet/JSP技术也在众多网站得到了广泛的应用,然而,在仅使用JSP技术开发的Web应用中,业务逻辑处理、动态显示用的Java代码以及HTML混合在一起,使得阅读、调试和维护都困难重重。

为了使开发的Web应用具有良好的可扩展性和易于分工,我们必须要做到:

(1)将业务逻辑与用户界面分离;

(2)将动态页面显示逻辑与静态的HTML代码分离。

由Apache Jakarta项目组提供的Struts应用框架正是用来解决这些问题的,它基于MVC的设计思想,很好地实现了业务逻辑与用户界面的分离,同时,它提供了大量的自定义标记库,可以在JSP页面中分离动态显示逻辑与静态的HTML,使页面代码更清晰,可读性大大提高。

2 MVC设计模式简介

MVC是Model-View-Controller的简称,它是一种设计模式,来源于面向对象语言Smalltalk,最近几年被推荐为SUN公司J2EE平台的设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心模块:模型(Model)、视图(View)和控制器(Controller),它们分别担负不同的任务,以提高应用程序的可扩展性。图1显示了这几个模块各自的功能以及它们的相互关系。

图1 MVC组件类型的关系和功能

2.1 View

用户视图模块,这是用户界面部分。与Web应用程序一样,主管应用程序与人之间的接口。一方面它为用户提供了输入手段,并触发应用逻辑运行;另一方面,它又将逻辑运行的结果一某种形式显示给用户。

2.2 Controller

流程控制模块。该部分是用户界面与Model的接口。一方面它解释来自于View的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为特定方法的调用;另一方面,他处理来自于Model的事件和Model逻辑执行的结果,调用适当的View为用户提供反馈。

2.3 Model

事务逻辑模块,这是整个模型的核心。它表示的是解决方案空间真正的逻辑。它采用面向对象的方法,将问题领域中的对象抽象为应用程序对象。在这些抽象的对象中封装了对象的是属性和这些对象所隐含的逻辑。

2.4 MVC处理过程

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。

3 Struts体系结构

Struts框架是在MVC模式基础上开发的新一代Web框架,在它的支持下可以快速开发基于Web的应用,而且提高了MVC的分层应用。它的标记库具有强大的页面开发功能。Struts框架的处理流程清楚地体现了MVC系统的特点,简单的Struts组件结构如图2所示。客户端通过Browser发出请求后,请求被Struts的控制器ActionServlet获得,ActionServlet在Struts-config.xml配置文件中查找有效映射,然后将相应的ActionMapping对象转发给Action处理器对象进行处理。Action处理器对象访问ActionForm中的数据,处理和响应客户的请求,它还调用后台的Bean组件,这些组件封装了具体的业务逻辑。Action处理器对象根据处理结果通知控制器,控制器进行下一步的处理。

图2 Struts框架的组件结构图

3.1 控制器(Controller)

控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由图中ActionServlet和ActionMapping对象构成:核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。

3.2 模型(Model)

mvc框架范文第4篇

关键词:MVC;网站开发;

中图分类号:TP311.52

1 MVC发展

早期提出的MVC是一种架构模式,MVC并不是指设计模式,MVC主要用来描述应用程序的整体结构及MVC各部分信息交互的方式。早期提出MVC模式的是Trygve Reenskaug,主要为程序语言Smalltalk发明的一种软件设计的模式。MVC主要用来实现动态程序设计,从而简化日后的程序修改和升级操作,同时可以将程序中部分功能重复使用。MVC可以将复杂的程序简化,程序结构更加直观,现在MVC框架模式有很多版本,最常见的框架模式有Struts,Spring,Hibernate, MVC等。

Microsoft公司的 MVC框架是以MVC模式为基础的网站应用程序框架,它为程序开发人员提供了一项快速开发网站框架设计模式,MVC可以实现程序和界面分离,主要体现在分离任务,主要包括输入逻辑,业务逻辑,显示逻辑分开,这样设计易于测试,并支持测试驱动开发。它是可以扩展简便的框架,程序员可以自定义视图引擎,UrlRouting规则和重载Action方法等。程序开发人员可使用所提供的页面标记,模板页和用户控件等开发网站程序。

在1中使用的codebehind技术,实现了界面aspx文件和代码cs文件分离,也就是一种MVC设计。而2.0中使用codebeside技术,主要实现一个视图aspx文件可以关联多个cs文件。在3.5中MVC框架功能进一步增强。程序员可以使用UrlRouting技术实现网站程序url指向某个controller等。3.5需要安装 MVC 2后,才能实现 MVC应用程序开发。在4中自带 MVC 2,在4之后的版本中不需要安装 MVC 2,它是的一个内置组件,这样设计可以方便程序开发,提高程序开发的效率。

2 MVC框架

2.1 MVC框架由模型,视图,控制器组成,是网站开发程序员非常熟悉的一种开发设计框架,将业务逻辑,数据和界面显示分离,使程序开发和维护更加方便快捷,可以提高程序开发效率。

模型是对数据的加工,业务流程的处理,所有的网站程序都显示数据,数据存放的位置可以是磁盘文件,也可以存放在数据中,还可以存放在内存中,模型是相对数据的一个抽象概念,网站中数据不管是以哪种形式存放,网站都可以通过模型来操作数据。在网站程序设计时通常把数据的实体类看做一个模型,比如新闻系统中,新闻信息通常是存储在数据库中的,在数据库中用一个新闻表new来存放信息,在网站程序中会创建一个数据类new来与数据库中新闻表相对应,这个类就是新闻表的模型。模型是一个独立的功能模块,通过一个模型程序模块可以为多个视图提供数据,设计完成的模型可以被多个视图复用,从而提高了代码的重用性。

视图是显示给用户的界面,视图界面中数据来自于模型,视图数据更新由控制器来实现,视图只显示数据不提供业务逻辑处理功能。例如用户可以通过视图来查看模型中定义的数据,用户还可以通过视图来操作数据信息,使用模型将数据信息操作的结果显示给用户。在windows桌面系统中,视图可以是一个或多个窗体。在网站程序中的视图是aspx文件,每个aspx文件是一个网页的视图界面。

控制器接受用户的输入信息并调用模型和视图完成用户的需求,当用户单击网页超级链接或发送HTML表单时,控制器不会输入任何信息,控制器只接收请求,决定调用哪个模型处理请求,最后再确定用哪个视图返回数据信息。例如用户通过视图一个新闻信息命令给控制器,控制器将按程序的设计更新模型中定义的数据信息,最后将结果以视图的形式显示给用户。

2.2 MVC框架提供了一个可以代替WebForm的框架模式。WebForm主要是由aspx文件和aspx.cs文件组成,WebForm可以将HTML接口与业务逻辑分开,它具有丰富的服务器控件可供程序员使用,加快了程序的开发速度,它提供数据做定技术,简化了程序与数据库之间的操作,它还可以使用用户控件和第三方控件技术,提高了程序的可扩展性。但WebForm页面生命周期比较复杂,增加了程序调试复杂程度,在程序开发过程中可能存在过度封装,从而影响程序的运行速度。

MVC优点是将复杂的网站程序分为模型,视图和控制器,这样就使复杂程序开发更加容易维护,减少了程序之间的耦合。不使用ViewState和服务器表单控件,可以完成控制网站程序。它可以更加方便的与Jquery整合,实现Ajax技术,实现无刷新更新页页比较容易,从而及大的提高了程序的开发进程。

2.3 MVC网站程序设计目录结构。使用新建MVC Web Application应用程序,在目录结构中文件夹Models,Views,Controllers分别对应MVC中模型,视图,控制器。Models文件夹存放业务逻辑的类文件。Views文件夹存放.aspx页面,为用户提供视图显示。Controllers文件夹存放处理客户请求类文件。

3 MVC实例设计

通过信息系统网站应用程序设计来展示 MVC框架设计方法,信息系统主要包括三项功能分别是信息查看,信息修改,信息添加,数据库设计使用的是SQL Server,先建立news数据库用来存储信息id,信息标题,信息内容,信息时间。

3.1 模型的设计。在网站项目中的model文件夹中定义一个关系对象类LINQ TO SQL,类文件名称为news.dbml,然后将数据这库中的表news映射为news 类,这样使用LINQ TO SQL类就可以完成对数据库中信息的操作了,再定义一个newsReposit类,主要功能实现信息的添加,查询,删除和修改等操作。操作过程如下,先添加news表的O/R映射生成对应的实体类,打开在“解决方案管理器”中找到项目内的model文件夹,在model上“右键”,选择“添加”中的“新建项”,在弹出窗口中选择“LINQ TO SQL类”,名称“news.dbml”,选择“添加”按钮。然后建立类和数据库的映射,在服务器资料管理器上“右键”点“数据连接”,选择“添加连接”,选择对应的“数据库服务器”和“数据库”,再选择“确定”按钮。在打开的数据库中找到news表,按“左键”将表移动到右侧窗口中,“保存”完成映射。

3.2 控制器的设计。在网站项目中的controllers文件夹中定义newsContro类,主要功能实现对用户发出的请求进行处理,再将处理完成的信息选择相应的视图显示给用户。

3.3 视图的设计。在网站项目中的views文件夹中建立new文件夹,将视图文件存放在new文件夹中,主要视图文件有add.aspx添加信息视图,edit.aspx修改信息视图,default.aspx显示信息视图,error.aspx操作错误提示信息视图,del.aspx删除信息视图。

4 结束语

MVC框架在.NET平台下使用,实现软件开发的代码和界面分离设计,界面设计员完成视图开发,程序设计员完成模型开发,从而提高了网站开发效率。

参考文献:

[1]董宁 MVC程序开发[M].北京:人民邮电出版社,2014.

[2]黄保翕 MVC 4开发指南[M].北京:清华大学出版社,2013.

[3]巴勒莫(美) MVC 4实战[M].北京:水利水电出版社,2014.

作者简介:张志刚(1978-),男,吉林人,教师,助教,硕士,研究方向:软件工程。

mvc框架范文第5篇

【关键词】.NET MVC框架 Web 设计

在基于.NET MVC框架的Web出现以前,Web中的主要技术是ASP、JSP等技术,这些技术的应用很容易将业务逻辑与页面显示混合起来,并不利于分工与协作。同时由于在业务逻辑层中含有SQL语句,如果出现数据库变化等,将直接影响到系统修改,其不利于系统维护。因此,基于.NET MVC框架的Web设计成为计算机领域研究重点。

1 MVC优点

MVC的优点主要体现在以下几点:

1.1 共享性

它主要是利用模型完成数据返回的,且可以利用视图实现数据传达,并实现格式化,然后再将这些信息传递到用户手中,在数据分离形式的作用下,也可以有效提升系统代码的移植性与重用性。

1.2 控制性

这一点主要表现在控制器对业务的控制上,它能够结合用户实际情况完成控制,然后从模型层中获得必要的信息,再将这些信息传递到视图层中,并让这些数据显现出来,这样也可以有效提升应用程序的可配置性与灵活性。

2 MVC设计思想

MVC主要由三部分构成,分别为模型层、视图层以及控制器层。为做好NVC设计,就需要充分了解这三个层次:

2.1 视图层

它所代表的是同网页用户的应用界面,也就是Web中的HTML页面。一般来讲,视图层主要是将系统中的数据呈现出来,且为用户提供有利于交互的界面,这样一来也就减少了地其他业务的处理。在实际利用的过程中,视图通常需要提交数据用户以后再接受其他数据,然后再将这些数据以用户需求的方式体现出来,同时,用户也会利用视图层将自己的请求传送到模型中。

2.2 模型层

它是MVC框架中最重要的组成部分,是实现系统逻辑处理的重要组成部分。在模型接收来自视图层的请求以后,就会自动处理,然后再将处理结果在控制器的作用下回馈给视图层。在这一过程中,控制器与视图层均是通过操作的方式进行工作的。

2.3 控制层

对于控制器来说,其功能是将用户发出的请求反映给模型,然后再将模型所给出的结果反映给用户,可以说控制层是视图层与模型之间的中转环节,是反馈用户请求的重要力量,但它并不参与数据处理工作。

3 基于.NET MVC框架的Web设计

对于常规Web应用系统来说,主要分为表示层、业务层以及数据库层几个部分,在表示层中,只有视图与控制器两部分;在业务层中有业务逻辑层、实体层、数据访问及其接口层;在数据层中仅有数据库。要做好基于.NET MVC框架的Web设计,应从以下几方面入手:

3.1 表示层

对于.NET MVC框架来说,在的作用下能够获得良好且有利于MVC设计实现的环境。开发人员只要利用.aspx页面中的开发用户接口就可以将视图展示出来,同时也可以将控制器中的功能体现出来。模型主要对应的则是业务应用部分。为做好基于.NET MVC框架的Web设计,可以在页面控制器的作用下优化MVC,然后在应用程序各个页面的公用方法中编入基类,这样一来,所有页面中都存在基类,它们不仅可以将自己原有的内容体现出来,还具有其他作用。

3.2 业务层

对于业务层来说,它是MVC设计中十分重要的一部分,也是基于.NET MVC框架的Web设计基础,在这一部分的设计中应从以下几方面入手:

(1)保证业务逻辑与数据实体相分离,两者属于不同的组成部分,对于业务逻辑类来说,主要是利用实体对象完成业务规则与逻辑实现的,而实体层则有自己的实体对象,一般来讲只有属性,不存在方法,所以主要用于数据实体展现。

(2)分x数据访问与业务。在这一部分中主要涵盖了数据访问层及其接口层,它的主要作用是让业务逻辑层可以全面的描述业务规则,这样一来就可以用数据访问层完成实体对象与数据库交互。为做好基于.NET MVC框架的Web设计,应将数据访问接口层加入到访问层与业务逻辑层之间,这样不仅可以起到工厂模式的作用还能让数据访问方法构成抽象接口,这样就可以将业务逻辑层与数据访问层分离开来,同时也便于配置文件的修改。

(3)为做好基于.NET MVC框架的Web设计,还要在访问层中应用NHibernate工具,它是以.NET为基础建立起来的关系型数据库,属于对象持久化类库的一种。在NHibernate中不必编写SQL语句,它可以将相关的映射信息保留下来,并存储到原数据中,这样就可以让代码与对象之间存在一定的关联性,并自动生成SQL语句,这样也可以让对象存储到表与字段中。

3.3 模型层

由于模型是应用程序的中心,其中涵盖了很多与应用程序相关的内容,所以,在实际设计中,应进一步强化应用程序的持久化。对于基于.NET MVC框架的Web设计来说,可以将LINQ-TO-SQL应用其中,原因在于这种设计方式不仅有利于,还可以将.NET平台与LINQ机制结合在一起,这也是有效提升数据库处理能力的有效方式。在设计中,可以先为应用程序创建DAL,但不需要编写代码,然后再做进一步细分,并用LINQ完成语句查询,且从数据库中找出所需的实体对象。在设计完成以后,LINQ-TO-SQL就可以将不必要的细节忽略,这样既能有效提升数据库操作的便利性,也能进一步强化业务逻辑开发,更可以加快数据应用程序开发速度。

3.4 控制层

由于控制层主要用于用户请求与输入处理,然后再将结果反馈给客户端,同时完成数据集合与处理,并为其呈现合适的视图,这样就可以将隐藏其中的视图代码消除。为做好设计首先应创建合适的模型,并全面检查数据访问与执行状态,且提供一定的面向对象数据,这样就可以让数据与方法结合在一起,且构成一定的视图。在.NET MVC框架完成以后,也可以更好的完成各个元素之间的协调与组织,这也是有效强化程序元素交互的有效方式。为进一步做好应用程序测试,还要做好类显示输出,以便为用户输入奠定基础,尽管编写程序相对复杂,但且会因.NET MVC框架的不同,将业务逻辑分离开,这样也可以有效提升单元测试效率。

3.5 视图层

在基于.NET MVC框架的Web设计中,视图层主要用于模型展示,在视图层的作用下可以将浏览器中的HTML页面展示出来,所以,在实际时可以利用微软控件实现控制,这样也可以让HTML更加洁与高效。然后通过.NET MVC提供的相关说明了解各个控件的作用,这样就可以顺利完成视图层设计与开发,相关开发也可以有效提升工作效率。在视图层设计完成以后,还可以顺利完成视图检查等,尤其是在编译阶段,可以随时发现隐藏在其中的错误与缺陷,视图模板也将变得更加清晰。

3.6 框架特点

之所以要重视基于.NET MVC框架的Web设计,主要是由于在基于.NET MVC框架的Web设计中,Web中的三层框架带有一定的细分性,不仅可以让结构更加清晰,还能进一步完备相关功能,进而让系统变得更具有条理性与便捷性。其次,做好.NET MVC框架设计,可以让显示层与应用层相互分离,也可以进一步做好页面修改,这也是实现单元测试,强化系统灵活性的有效方式。再者,在基于.NET MVC框架的Web设计实现以后,还可以最大程度的减少依懒性,由于前端页面过于复杂,需要共享的代码也很多,这就需要利用MVC模式完成分离等,这也是有效强化管理,做好修改的有效措施。最后,在基于.NET MVC框架的Web设计中,不仅可以让数据访问与业务逻辑区分开来,还可以强化系统的可移植性与持久性,尤其是在工厂模式的作用下,也可以进一步突出依赖倒置原则,且最大程度的减少数据访问层给系统带来的变化。

4 结束语

之所以要做好Web设计,主要是为了更好弥补原有设计中的不足,为实现这一目标,基于.NET MVC框架的Web设计成为重点,在这样的Web设计完成以后,不仅有效提升了系统灵活性,还进一步提升了可维护性,同时也有效降低了代码编写量与复杂性,促进了开发效率早日完成,因此,应重视基于.NET MVC框架的Web设计。

参考文献

[1]周文红.基于 MVC框架的Web应用开发[J].计算机与现代化,2013(10):197-199.

[2]黄胜根,陈蜀宇.基于 MVC框架的干教系统的设计与实现[J].计算机技术与发展,2010(02):190-193.

[3]刘亚鹏,张征,俞婷.基于MVC多层架构的Web应用框架设计[J].微计算机信息,2011(07):169-171.

[4]许辉.基于 MVC框架的Web设计[J].计算机光盘软件与应用,2014(16):266-267.

[5]黄东连.基于 MVC框架的Web开发研究[J].河南科技,2015(13):26-27.

[6]肖洋.基于的MVC框架的应用开发模式研究[J].电子技术与软件工程,2016(02):63.

[7]满高媛.MVC设计模式在框架中的应用研究[J].软件导刊,2016(04):149-151.

作者单位

mvc框架范文第6篇

关键词:MVC;PHP;FLEX;框架

中图分类号:TP314 文献标识码:A文章编号:1007-9599 (2010) 04-0000-02

MVC Framework Application&Study Based on Flex&PHP

Xu Yingzhong,Chen Wenzhu,Zhang Lingxiao

(Central China Normal University,Wuhan430079,China)

Abstract:MVC(Model-View-Controller) is a classic,sophisticated and widely used programming design pared with traditional software development model,it has a better performance of decoupling, reusablitiy,maintainability,extendibility and so on.This paper proposes a hybrid MVC framework which combines two MVC frameworks - Thinkphp based on PHP and PureMVC based on Flex,and discusses the efficiency of communication between server and client implemented by Amfphp and HttpService respectively.The empirical analysis and experimental results show that Amfphp outperforms the latter.The conclusion is helpful especially under the relatively poor network environment.

Keywords:MVC;PHP;Flex;Framework

MVC框架是在开发分工越来越明确的情况下产生的,MVC结构提供了一种按功能对各种对象进行层次分割的方法(这些对象是用来维护和表现数据的),其目的是为了将各对象间的耦合程度减至最小,MVC是程序设计发展的一种趋势。

一、 MVC设计模式

MVC模式是1970年由Trygve Reenskaug在施乐公司的研究中心提出的。最早的参考例程代码是用smalltalk80编写的。它最初是用来解决应用软件中的用户图形界面的交互问题的。MVC设计模式的基本原理是把应用程序的数据和业务逻辑、数据的外观呈现以及对数据的操作划分到不同的实体中去,这些实体称为模型、视图和控制器。

MVC模式的核心思想是分离责任,使得数据、视图和逻辑部分分开,模型层关心的只是应用的状态以及业务逻辑而不用考虑数据如何展现给用户;视图层关心的是的只是如何根据模型的变化为用户提供用户界面;控制层则负责接收用户的输入然后将其交给对应的模型,它并不关心用户如何输入以及这些输入数据是如何作用于模型的。

模型(Model):业务逻辑和数据。

视图(View):用户界面。

控制器(Controller):接收、识别请求并在模型和视图间建立映射关系。

图1.MVC模型原理

如图展示的是MVC模型的基本流程,首先,用户通过视图输入发送请求,控制器接收到请求之后会调用对应的模型来执行一定的业务逻辑,执行完后模型返回数据,此时控制器再调用对应的视图,视图会负责对模型数据进行格式化最终展现给用户。MVC是程序设计的一种思想或模式,对于各种不同编程语言的不同的MVC框架,由于这些平台自身具有的一些特性,它们在实现方式上可能会有一些不同,比如在Flex中,更推荐直接使用数据绑定的方式来对视图进行更新。

二、基于MVC设计模式的ThinkPHP框架

(一)Thinkphp简介

目前主流的基于PHP的MVC框架有Zend Framework、CakePHP、QeePHP等等,ThinkPHP也是其中之一,它借鉴了许多国外的优秀框架和模式,融合了Structs的Action思想、JSP的TagLib、RoR的ORM映射与ActiveRecord模式,封装了CURD和一些常用数据库操作,在项目配置、类库导入、模版引擎、查询语言、数据验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有不错的表现。

(二)Thinkphp工作流程

图3.Thinkphp工作流程

如图,当用户向服务器发出了一个HTTP请求之后,前端控制器会对URL进行分析,调用Dispatcher将任务派发给对应的模块(动作控制器,Controller),接着该模块会根据业务流程的需要选择性地调用业务模型(Model),并将用户提交的数据传递给它,接着调用视图(View)对业务模型中返回的数据进行格式化输出,最终把输出结果返回至客户端。

三、PureMVC框架

(一)Flex技术

Flex是一种基于标准编程模型的高效RIA开发产品集,最初由Macromedia公司在2004年。一个完整的Flex程序由MXML代码和ActionScript代码组成。MXML与HTML类似,是基于XML的标记语言,MXML用来在FLEX中设计用户界面,Flex Framework中提供了非常丰富的UI组件。和Flash一样,Flex项目最终会被编译成*.swf文件,由Flash Player解释运行。

(二)PureMVC简介

PureMVC是一款通用型MVC框架,最初基于ActionScript,现在已经移植到几乎所有的主流平台。在PureMVC中,同样是通过MVC三层设计来降低模块间的耦合性,Model、View和Controller分别对应3个类,即Proxy、Mediator、Command,另外,Façade层将这三者统一起来,使用过程中只需要通过一个Façade类来对它们进行操作,这样能够简化应用程序的开发。

(三)pureMVC工作流程

图4.PureMVC工作流程

如图4,程序初始化时,ApplicationFacade会负责初始化整个MVC,包括生成Proxy、注册各个Command和Mediator。当UI Component与用户交互时,UI组件会将Event派发出去,对应的Mediator接收到Event后,可以生成Notification并通过该Notification的Body携带参数,然后通过PureMVC的Notification系统广播该消息,注册了这个Notification(或称对该Notification感兴趣)的Command或者Mediator将会作出响应,Mediator可以更新UI,Command可以操作Proxy去更新数据,与服务端的交互是在Proxy内部完成的,当数据更新后,Proxy可以再发出一个Notification,对其感兴趣的Command或者Mediator会作出响应,如此,PureMVC不断运行下去。

四、整合应用

(一)Flex与PHP的通信方式

Flex使用RPC(Remote Procedure Call)方式与外部程序交互数据,RPC通信是一个异步过程,客户端把数据请求发送给服务端然后等待返回结果。Flex与服务端的通信方式有三种:

WebService是网络应用程序的标准,它向外部暴露能够通过Web进行调用的API集合,我们可以通过调用其API来获取需要的数据。HttpService是最常用的一种方式,通过向服务端提交POST或GET形式的请求来获取数据。Remote Object是Flex中一种特殊的通信方式,使用Adobe自定义的二进制数据通信协议AMF(Action Message Format)与服务端交互,可以交换任意类型的数据,包括对象、图片等等。

(二)框架整合

图5.PureMVC与Thinkphp整合框架

如图5,整合后的PureMVC与Thinkphp,使用PureMVC来替代Thinkphp的视图(View)部分,在工作时两个框架各司其职,pureMVC负责前端的用户交互,Thinkphp负责服务端的业务逻辑和数据,gateway.php相当于服务端的入口,客户端的proxy负责与其通信,通信方式可以是HttpService、WebService以及Remote Object。

五、结束语

随着富互联网技术的迅速发展,出现了客户端MVC框架,本文分别探讨了基于PHP的Thinkphp框架和基于Flex的PureMVC框架,提出了整合应用服务端与客户端MVC框架的方案,并对AMFPHP和HttpService方式下客户端与服务端的通信效率进行了实验和测试,当通信量较大或者是网络通信环境比较差的时候AMF对通信质量的改善是很有帮助的。

参考文献:

[1]叶建芳.应用FLEX技术构建RIA系统[D].浙江大学,2006

[2]JasonE.Sweat.php|architect’s Guide to PHP Design Patterns[M].Toronto:Macro Tabini & Associates,2005

[3]袁梅冷,黄烟波,黄家林.J2EE 应用模型中MVC软件体系结构的研究与应用[J].计算机应用研究,2003,20,3:147-149

作者简介:

mvc框架范文第7篇

>> 基于.NET Catharsis框架(EasyUI+EF+MVC)的应用开发 基于.NET MVC框架的Web设计 基于 MVC框架的研究 基于.NET框架MVC模式的在线考试系统设计 基于 MVC6框架的Web应用开发研究 基于 MVC框架的学生信息管理系统的设计与实现 基于.NET3.5 MVC框架的网上评教系统的设计与实现 基于.NET MVC框架下表单模型数据绑定的篡改及处理方法 基于.NET3.5 MVC框架的SNS社区系统设计与实现 基于 的MVC设计模式探析 MVC模式与 MVC框架的技术研究 基于DWZ、NHibernate和 MVC 3架构的Web开发应用 基于 MVC框架的高职教务信息化平台的设计与实现 基于 MVC的物料管理系统设计与开发 基于MVC和NHibernate的开发框架研究 基于MVC模式的PHP开发框架研究 一种基于MVC设计模式的开发框架 基于J2EE的MVC开发框架探讨 基于MVC模式下的开发框架建设与改进 MVC的研究 常见问题解答 当前所在位置:?fromId=8039.2013-3-20.

[2]HChinahsjpyH.MVC框架[EB/OL].http:///view/5432454.htm?fromId=31&redirected=seachword,2013.4.30.

[3]唐灿.下一代Web界面前端技术综述[J].重庆工商大学学报(自然科学版),2009(04):350-355.

[4]方柯.基于 MVC框架的Web应用开发研究[D].华东师范大学,2011.

[5]林乐逸.基于 MVC和实体框架的软件项目管理平台[D].上海交通大学,2012.

[6]马鹏.基于LINQ to Entity数据访问技术的应用研究[J].现代计算机(专业版),2011(14).

[7]何丽,龚旺.JQuery在Ajax技术框架中页面加载的应用[J].计算机时代,2011(08):25-26.

作者简介:巴音查汗(1967-),男,研究生,高级讲师,研究方向:学校信息化建设、软件开发。

mvc框架范文第8篇

关键词:Struts;MVC;设计模式

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31677-02

Struts: the Development of Web Framework Based on MVC

LIU Jie

(Suqian College, Suqian 223800, China)

Abstract: Struts provides a universal framework for the application of Web,it can enhance the speed of Web application. First, the article introduces the MVC design pattern, then analyses how to use Struts to achieve MVC mechanism, last reveals the deficiency of MVC.

Key words: Struts MVC Design Pattern

1 引言

由于Web应用的大型化、功能日趋复杂,使得传统的开发方式不再适合,一种新的设计模式―MVC模式(Model-View-Controller,模型-视图-控制器)被广泛应用于网站架构设计中。Struts作为MVC模式的一种实现,很好的结合了JSP、Servlet、JavaBean、Taglib等技术。

2 Jsp Model1和Jsp Model2

在早期的Java Web应用中,常会提到Jsp Model1和Jsp Model2这两个概念。在Jsp Model1模型中,JSP充当着控制器与视图的双重角色,JavaBean扮演了模型的角色。JSP直接调用后台模型进行业务处理,同时,再由JSP返回用户结果界面。这种模型对于一些小型的程序还是可以满足的,但对于大规模的系统就显得力不从心。因为倘若将JSP即当成控制器又当成视图,那么在页面代码中就会有大量的HTML标记与Java语言的混合物,这对程序的维护是非常不利的,而且对与页面开发人员和程序设计人员的分工将造成太多的约束,无法使它们并行工作,开发效率也就大大降低,故很难对整个系统进行有效的控制管理和开发。所以现阶段,开发者更倾向于使用Jsp Model2的模式进行Web系统的开发,就是我们所说的MVC设计模式。

3 MVC设计模式

MVC模式(Model-View-Controller,模型-视图-控制器)是20世纪80年明的一种软件设计模式,至今已被广泛使用。在MVC经典架构中,它把应用程序分为3个部分:模型、视图和控制器。它们之间的关系如图1所示:

图1 MVC模式框架

模型代表了该应用程序的核心功能,它负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可被多个视图所共享。

视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务逻辑。视图可以向模型查询业务状态,但不能改变模型。视图还能接收模型发出的数据更新事件,从而对用户界面进行同步更新。

控制器负责接收用户的请求和数据,接着它会做出判断将请求和数据交由哪一个模型来处理,最后调用视图来显示模型返回的数据。

故在一次程序运行的过程中,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。

MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统是不错的选择。

4 Struts框架

作为一个Web框架,Struts很好的实现了MVC model2架构。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。图2显示了Struts实现的MVC框架。

图2 Struts实现的MVC框架

图2实际上是在图1的基础上发展而来的,因此两者比较相似。但Struts为了很好的实现M、V、C 之间的松耦,对图1做了许多修改,主要体现在于Struts中的控制器这一层上。

从图2中可以发现,Struts采用了ActionServlet和Action来替代图1中的Servlet组件。其实,ActionServlet就是原先的Servlet,只不过在基于图1的应用程序中,用户请求会由许多不同的Servlet接收处理。例如,可能登录时接收请求的是LoginServlet,而注册时调用的是RegisterServlet.在Struts应用程序中,所有的用户请求都由ActionServlet接收,然后根据用户请求的不同样式到Struts-config.xml文件中查找相应的子控制器,也就是Action。

Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。对于小型简单的应用,Action类本身也可以完成一些实际的业务逻辑。对于大型应用,Action充当用户请求和业务逻辑处理之间的适配器,其功能就是将请求与业务逻辑分开,Action根据用户请求调用相关的业务逻辑组件。

当ActionServlet控制器接收到用户请求后,把请求转发到一个Action实例。如果这个实例不存在,控制器会首先创建它,然后调用这个Action实例的execute()方法。Action的execute()方法返回ActionForward对象,它封装了把用户请求再转发给其它Web组件的信息。用户定义自己的Action类,即Action基类的子类时,必须覆盖execute()方法。

下面以简单的用户登录页面来阐述Struts应用:用户正在浏览一个用Struts技术构建的网站主页,主页上有一个登录表单,用户填好登录名和密码,单击“登录”按钮,就激活了以下一系列过程:

(1)用户的请求以HTTP方式传输到服务器上,接收请求的是ActionServlet。

(2)ActionServlet接收到请求后,会查找Struts-config.xml文件来确定服务器上是否有用户请求的操作,此处用户请求的操作应为登录操作。如果没有,则返回一个用户请求无效的出错信息。

(3)当ActionServlet找到用户请求的Action后,首先将用户输入的表单参数打包

成一个ActionForm对象,这个ActionForm对象其实就是一个JavaBean,里面包含两个字段,分别是用户名和密码。接着ActionServlet再根据Struts-config.xml中的配置信息决定是否要执行ActionForm中的Validate方法。若Validate方法执行有错,则返回;否则,继续下一步。

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

(4)系统生成一个用户所请求的Action的实例对象,将前面的ActionForm对象传递给它,运行它的execute()方法。这一步其实就是用户登录的控制器,在执行execute()方法时,可以调用后台模型验证登录名和密码是否正确等信息。

(5)execute()方法执行结束前会生成一个ActionForward类型的对象并将之返回给ActionServlet,该对象的作用是告诉ActionServlet下一步应该跳转到哪里,加入后台模型检验用户名和密码正确,则ActionForward就跳转到一个登录成功的界面。ActionServlet将对之进行分析,其实就相当于接收到一个新的请求,重复(2)~(5)的过程,直到将某个界面返回用户为止。

5 Struts的不足之处

Struts做到了M、V、C三者的松耦,所以使用Struts来构建J2EE应用程序可以获得较大的灵活性,可重用性以及可维护性。但Struts也存在以下的不足之处:

(1)使用structs难免要使用它的标记库,虽然标记库能大大提高开发效率,但对于初学者而言,却需要一个的过程,而且使用了标记库有时会损失页面的美观性。

(2)Struts只是实现了HTTP的请求-响应机制。这种响应机制的缺点在于客户端或浏览器端的用户向服务器端发出请求后,服务器端才会将数据发往浏览器端。这样限制了程序员使用细粒度的事件,当然也降低了用户体验。因为现在的Web程序十分注重用户体验,这样的处理机制看来大大降低了Struts中MVC的灵活性。

(3)Struts不适合较小的系统,如果一个页面里只处理一两个参数,处理的代码也只有几行,那用struts就如同大炮打蚊子。但对于较大系统,随着程序规模的增大,人工维护Struts-config.xml非常不方便,加大了维护的负担。

6 结束语

Struts是一种基于MVC设计模式的Java Web框架,它使系统开发过程各个模块更加细化。通过Struts框架,开发人员可以方便的将系统的画面显示、业务逻辑和数据操作以层次的形式加以分割,从而方便开发,提高效率,同时增强系统的可扩展性、维护性。通过本文, 可以使读者对MVC设计模式和Struts框架有一个清楚的了解。

参考文献:

[1] Ted Husted 著. 黄若波,等译. 实战Struts[M]. 北京:机械工业出版社,2005.

[2] 孙卫琴 著. 精通Strtus:基于MVC的Java Web设计与开发[M]. 北京:电子工业出版社, 2005.

[3] 邱哲,等著. Strtus Web设计与开发大全[M]. 北京:清华大学出版社,2006.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

mvc框架范文第9篇

关键词:MVC NHibernate 开发框架

中图分类号:TN 文献标识码:A 文章编号:1007-9416(2012)02-0088-02

1、引言

软件在开发过程中,如果没有一个好的设计模式和开发框架,则需要编写大量的基础代码,这无疑降低了开发效率;同时,从基础源代码着手开发的套装软件或定制软件往往都具有较高的耦合度,维护困难。因此,开发人员逐渐把软件开发的重点从数据结构和算法转向设计模式和开发框架上。

MVC(Model-View-Controller)是目前软件开发中广泛采用的一种设计模式。它把一个Web应用分离为模型、视图和控制器三个部分,使得系统结构清晰,利于维护和扩展。NHibernate是Microsoft .NET的ORM持久化框架,从Java的Hibernate项目移植而来。NHibernate框架从数据库底层来持久化.Net对象到关系型数据库,使软件代码仅仅和对象关联,从而摆脱了SQL、和事务、缓存等底层开发。本文在分析目前主流开发框架的基础上,将MVC设计模式与NHibernate框架有效整合,来降低系统总体架构的藕合度和业务模型的开发难度。

2、主流的开发框架

2.1 SSH开发框架

SSH开发框架是指在J2EE平台下融合了Struts、Spring和Hibernate的开发框架,其体系结构如图1所示。

其中,Struts是典型的基于MVC设计模式的框架,主要用于表示层的构建,具体实现是通过控制器将表现逻辑和业务逻辑解藕,以提高系统的可维护性、可扩展性和可重用性;Spring是一个模块化的框架,主要负责业务逻辑层的构建,允许开发人员自由选择适合的模块进行开发;Hibernate是一个开放源代码的对象关系映射框架,主要负责持久层的构建,对JDBC进行了轻量级的对象封装,支持开发人员使用对象编程来操纵数据库。

2.2 WebForm三层开发框架

在.NET平台下,本身就是一个基于事件响应的Web开发框架,但是结构单一、层次不够分明。因此,在客户端与数据库之间加入一个“中间层”(即组件层),出现了三层开发框架,如图2所示。

其中,表示层是展现给用户的界面,即用户在使用一个系统时的所见所得;业务逻辑层实现对数据层的操作,完成对数据业务的逻辑处理;数据访问层直接操作数据库,实现数据的增加、删除和更新等。

2.3 MVC开发框架

MVC是微软开发的一个实现MVC设计模式的Web开发框架,由Castle的Monorail(一种MVC Web开发框架)演变而来,其结构如图3所示。

其中视图可以通过在ASPX页面中开发用户接口来实现;控制器的功能在逻辑功能代码中实现;模型通常与应用系统的业务部分和数据库对应。

以上三种主流开发框架中,J2EE平台的SSH开发框架在大型项目开发过程中比.NET平台的开发框架具有更大的优势:

(1)易于进行单元测试和测试驱动开发;

(2)避免了WebForm中大量视图状态所导致的页面反应缓慢;

(3)模块化结构,易于大型项目的团队化开发。

因此,本文借鉴SSH开发框架的优势,对.NET平台下的开发框架进行扩充,设计实现了一个.NET平台下的多层开发框架。

3、.NET平台下基于MVC和NHibernate的开发框架

3.1 总体框架

该开发框架利用NHibernate框架构建了持久层,并借鉴了WebForm开发框架分层结构设计,在持久层与控制器之间增加了中间层,对数据和功能组件进行了封装,提供了统一接口供控制器调用。其体系结构如图4所示。

3.2 分层描述

3.2.1 模块管理层

由于该框架是主要针对大型项目的开发,因此,各功能模块之间要求一定的解耦。本层主要实现各粗粒度模块间的相互调用以及对外提供接口。

3.2.2 表示层

表示层用于呈现客户端的用户视图,负责从用户接收命令,请求和数据传递给控制器,并最终将结果封装后呈现给用户。

该框架为视图提供了自定义的视图引擎、模板和CSS样式表。根据视图引擎和视图对象的不同,视图可以呈现不同的页面类型和内容。同时,框架还可以应用JQuery技术,用来实现页面的异步显示和美化。

3.2.3 控制器

Controller调用应用接口层接口对数据进行操作;同时,调用相应的组件功能,执行用户通过视图传递的相关指令,并将封装后的视图类传递给视图。

3.2.4 应用接口层

该层针对数据访问接口和业务逻辑接口,将其封装后供控制器进行调用,本身不包含任何业务逻辑。

3.2.5 业务逻辑层

系统的核心层,所有与数据访问无关的业务逻辑都内聚在该层,并向应用接口层提供业务逻辑接口。

3.2.6 数据访问层

该层通过持久层提供的NHibernate API函数或者SQL语句,直接操作持久化类,对数据进行增添、删除、修改、更新、查找等操作,并向应用接口层提供数据访问接口。

3.2.7 持久层

所谓持久化,即把数据保存到可永久保存的存储设备中。该开发框架在持久层中建立一个持久化类,它是数据库表的一个映射。持久化类和NHibernate API(指Session类)关联后,就具有了持久化能力。持久化类通过Session类进行装载、保存、创建或查询(可采用HQL或其他方式以面向对象方式对持久化类进行查询)。对持久化类做的任何修改都会在Session刷新(flush)时被持久化到对应数据库表中。

3.2.8 数据源

开发框架除了支持常用的关系型数据库,如SQL Server,Oracle,DB2等,还支持对其他系统模块接口和数据源的调用。

4、结语

综上所述,MVC设计模式使软件开发过程更加规范和精炼,能产生易复用、易扩展、易维护的程序代码。NHibernate框架使开发人员从枯燥的SQL语句中解放出来,将更多的精力投入到业务逻辑的实现上。本文将MVC设计模式和NHibernate框架进行整合,提出了一个.NET平台下的多层开发框架,并详细设计了框架中各层的功能。可以发现,该开发框架增加了模型(Model)部分的重用性,降低了层与层之间耦合度,提高了系统的可维护性、可扩充性和可移植性。

参考文献

[1]陈龙.基于.NET平台ORM技术-NHibernate的研究与应用[D].长春:长春理工大学,2006.

[2]赵广利.基于NHibernate的数据持久化方案[J].计算机工程,2009,35(20).

[3]沈桂群.基于的MVC设计模式及实现[J].软件开发与设计,2009(10).

[4]李容.基于MVC模式的Web应用研究[J].软件导刊,2010,9(1).

mvc框架范文第10篇

关键词:计算机软件;系统重构;MVC框架;

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)22-0063-04

Abstract: The WebForm development mode control is rich, can quickly build Web applications, but there is a low reusability, low safety, running speed, etc., is not suitable for the development of large systems. In order to improve the security, maintainability and performance of the paper management system, MVC framework is adopted to reconstruct the system structure, and the data layer is reconstructed by using object relational mapping and Record Active technology. Compared with the test results, the system can be improved, the loop complexity, the number of code clones and the usage rate of CPU can be reduced.

Key words: computer software; system reconstruction; MVC framework;

1 问题背景

中的WebForm是一种可视化开发模式,用户通过拖拽控件进行网页界面的设计,Visual Studio编辑器自动在网页文件生成相应的代码,然后双击控件或者在事件视图中双击相应事件,将在另外一个对应的.CS文件中进行编码,实现对网页控件的交互操作[1]。由于开发方便、上手容易,WebForm模式在小型项目开发中广泛应用。但是对于中大型项目,采用WebForm模式进行开发的话会出现不少问题:项目中充斥着大量的网页文件和后台代码文件,文件数量过多难以管理;项目网页文件与逻辑代码文件紧密耦合,代码重用性不高;网页代码中暴露过多的系统实现细节,容易遭受网络攻击导致信息安全问题;数据库操作的代码实现比较繁琐,每次涉及到数据库交互操作都要重新写SQL语句;功能扩展麻烦,当需要扩展新的功能页面时需要重新设计网页界面和进行编码。

我们在开发论文管理系统的过程中,初期为了快速实现系统的主要功能,使用了 WebForm模式来进行项目的开发工作。但随着项目的进行,由于系统功能的不断扩展,同时用户需求有了一些更改,WebForm模式带来的问题逐步显露出来。针对开发工作中出现的问题,项目组决定使用 MVC框架重构系统,希望开发工作向着代码的结构规范、冗余度低、重用性好,系统扩展方便、安全性更高的方向发展,使系统具有更高的稳定性和可维护性。

2 MVC框架分析

MVC框架是现代大型项目开发中广泛使用的开发模型,其基于面向对象的设计模式极大提高了程序的开发速度,降低了功能扩展维护带来的不便,使功能像组件一样自由变换[1]。

2.1 MVC核心部件

MVC框架模式将系统按功能模块化地分成三个主要的部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务,相互之间通过接口进行交互[2],其功能划分及相互关系如图1所示。

跟传统的WebForm模式相比, MVC框架放弃了很多有缺陷的特性,如Code-behind页面、服务器控件、数据绑定、URL Rewrite等,取而代之的是Controller、HtmlHelper、Routing等类库和组件[3]。与WebForm相比, MVC在Web开发领域显得更加专业化,对Web开发的效率提升非常明显,特别是在规模较大、功能点多、页面数量多逻辑结构复杂的大型应用程序开发中,MVC模式在健壮性、代码重用和结构方面有了很大的提升 [4]。使用MVC架构开发出软件代码有较强的可理解性、重用性、系统稳定性、可维护性,能够减少软件的修改、再次开发等方面的工作量,减少了在系统方面所投入的成本[5]。

2.2 MVC框架运行流程

在 MVC4中,所有请求都是通过项目根目录中的一个Global.asax文件作为唯一的入口,客户端向服务器提交的请求首先由这个文件接收,由该文件执行Application_start()方法实例化启动进程,并调用路由匹配注册表确定指派到某一个控制器处理。控制器接到请求后,可以调用某一个对象模型来处理;模型根据相应的业务逻辑进行逻辑处理,并且与数据库进行交互,返回所需的数据;最终控制器加载并渲染指定的视图来将处理好的数据呈现给用户。系统采用 MVC 后的运行流程如图2所示。

3 系统结构的重构

在的WebForm模式中,系统的代码模块是按页面来分的,也就是说有多少个页面就有多少个逻辑处理文件,每个代码文件仅仅处理自身页面的代码逻辑,这种划分代码模块的缺点是,一旦页面过多,就会变得很杂乱,代码文件查找困难,维护难度高,而且不利于日后功能迭代或者功能修改。而在 MVC中,项目代码文件按部件来划分,而每个部件又通过系统功能的模块化对应来实现二级划分,整个项目就变得有层次和条理,维护起来也变得方便。

3.1 系统功能分析

毕业设计管理系统是一个教师、学生和系统管理员使用的教务管理平台。按使用角色可以对系统的功能作以下分类:教师有课题、修改个人信息、查看课题列表、查询学生信息等功能;学生有选择课题、修改个人信息、查询课题列表、查询教师信息、提交上传文档等功能;系统管理员有审核课题、课题信息管理、网站功能设置、用户信息管理、角色分配、论题管理等功能。

3.2 按功能划分模块

在MVC框架中,控制器实际上就是以相近功能组成的模块。对系统的功能进行分析后,我们进行模块的划分,将功能相近的代码逻辑放到同一个控制器里面,而每一个功能都通过控制器里的方法来实现,方便调用。根据对系统的功能进行分析,本系统的控制器可分为:教师控制器、学生控制器、角色控制器、用户控制器、论题控制器、系统设置控制器等。

在每个都模块抽象为MVC框架中的控制器后,根据每个模块中需要的页面在视图部分进行添加。这样,我们就把整个系统的功能进行了模块化的划分。模块之间既相互独立,又可以通过接口进行相互调用和联系。

3.3 代码文件结构

图3(a) 是WebForm模式中的文件结构,大量的文件都堆放在同一个目录,显得杂乱无章;图3(b)是使用了MVC模式重构后的代码文件结构,为每个核心部件都分配了不一样的目录,这样的做法分层合理,文件结构显得规范有条理;图3(c)是控制器部件目录的展开图,控制器目录中的每个文件都对应每一个模块,有些模块因需要分开两个控制器文件来实现,对应的视图文件在Views目录下。

4 数据层的重构

系统结构的重构完成之后,我们还利用对象关系映射(Object Relational Mapping,ORM)和Active Record技术来进行数据层的重构。

4.1 ORM和Active Record技术

ORM是随着面向对象思想的成熟而产生的一种软件开发技术。目前主流的框架产品,如 MVC、Hibernate等,已经将ORM集成在内。Microsoft Entity Framework 是一个对象关系映射(ORM)工具,它能将关系型数据转换成.NET数据对象,也可以将.NET数据对象转换成关系型数据 [6]。

Active Record是一种领域模型模式,最早由Rails提出,它在ORM的基础上,把负责持久化的代码也集成到数据对象中[7]。传统的ORM只是把数据对象与负责持久化的代码分隔开来,数据对象只是单纯的包含了自身的数据结构体。而在Active Record中,他们不仅是数据实体,而且包含了业务逻辑,集成了把自己持久化的操作。在 MVC中,Active Record已经定义好了集成持久化操作方法的模型父类,数据对象类只需要继承这个父类,就可以继承这些持久化操作的方法,通过简单的方法调用,就可以实现持久化操作。

4.2 重构系统的数据层

利用ORM和Active Record技术,我们在处理有关操作数据库的业务逻辑时,不需要接触到SQL语句。对数据的操作简化成了对象的操作,为一张表声明一个类,并使类中的成员对应关系型数据库中的字段,就可以跟这个类的实例进行交互了。至于这个对象中的数据怎么跟数据库交互,我们完全不用关心。ORM会根据实际需要生成相应的SQL语句执行,返回的结果又会自动处理成对象或者开发者想要的形式。

重构系统数据层的具体操作分以下两个步骤:

1)为系统的数据对象建立模型,将数据对象转化为关系型数据库中的表和列。

2)修改业务逻辑中需要与数据库交互的代码,将SQL语句替代为由Active Record操作数据对象。

重构系统数据层后,我们能够轻易地通过实例化数据对象来从模型中获取需要的数据,以系统的用户模块为例,用语句“List userList = db.users.ToList();”即可获取所有用户模型的集合。与直接使用SQL语句相比,Active Record技术更为简洁,不易出错,能够进行参数过滤和绑定,还能够屏蔽数据库之间的差异。Active Record技术简化了开发者的工作,使得系统的功能扩展或者修改都比较容易。

5 系统重构效果测量

为了比较重构后系统源代码的重用性、可维护性、冗杂度和性能上的差异,我们使用Visual Studio 2013分别对代码度量值、代码克隆分析和CUP使用率这三个指标进行了测量。

5.1 代码度量值

代码度量是一组对软件质量进行度量的数值,开发者依靠这组数值可以更好地分析他们开发中的代码。通过代码度量,开发者可以清楚看到哪些类型和/或方法应该重写或者进行更加彻底的代码测试。 开发团队也可以通过这组数值识别代码中哪些有可能出现的风险、对项目的状态进行了解,并对软件开发的进度进行跟踪[8]。代码度量会检测出项目代码中所有定义的命名空间,再在其中统计可维护指数、圈复杂度、继承深度等检测值。图4与图5为重构前后代码度量值的结果。

我们的目标是对可维护指数和圈复杂度进行分析。可维护指数的范围在0 至 100 之间,表示了代码维护的相对容易程度,数值越高意味着可维护性越好;而圈复杂度则是描述了代码在结构上的复杂度,它是通过计算程序流中的不同代码的路径数量来创建的 [8]。

对本次重构前后的系统代码检测结果显示,代码重构后可维护指数提升了14%,圈复杂度减少了原来的约40%。同时从层次结构看出,使用了MVC框架模式,代码的根命名空间比原来的少了很多,代码层次分明,可见代码的可维护性有了一定程度的提高。加上使用Active Record技术进行数据层对象封装,对数据对象的操作不再需要局部定义对象的结构,只需要调用Active Record的数据层对象就能胜任,这样相同功能的代码就相对集中在同一个目录,圈复杂度相应地降低。

5.2 代码克隆分析

代码克隆分析就是检测系统项目源代码中重复的部分,使开发人员能够整理重复的代码,提高代码质量。我们在研究中发现,Visual Studio的代码克隆分析不是仅仅匹配字面上的代码,而且能通过代码分析检测逻辑相同的代码,它不仅能搜索代码相同的模块,而且还能搜索语义上类似的结构。图6与图7为重构前后的代码克隆分析结果。

通过对比重构前后的代码克隆分析结果,可以看出使用MVC框架重构后的代码克隆数远小于重构前。而这意味着重构前有大量的重复代码存在,这样的坏处是,通过复制粘贴的源代码一旦需要修改部分代码,就需要查找所有涉及相同功能的地方一并修改;也有可能需要修改某些特定的地方,其他地方保持不变,这时候即使IDE编辑器有批量修改代码的功能也无济于事了。基于MVC框架重构后的代码高度抽象和封装,模块与模块之间已经有了明确的分工,很多相同的逻辑将合并起来;而ORM将通过写SQL语句来获取数据操作的源代码转化成了通过调用ORM封装的方法来生成数据对象的源代码,重复的SQL语句将不再出现,这也是克隆代码降低的其中一个原因。在软件开发的过程中,使用重复代码的频率越少,日后源代码的维护就会越容易。可见,重构后的源代码可维护性有了很大的提高。

5.3 CPU使用率

使用MVC框架重构后的项目抽象封装程度高,有人觉得会对性能造成影响,因为每次运行都要初始化封装好的对象,有可能会加载一些不需要的组件来增加服务器的开销。我们根据重构前后的代码,使用Visual Studio运行代码分析,访问论文管理系统的同一个页面,监听CPU使用率随时间变化的过程,测试时间大约是1分半钟。期间页面每隔一段时间(约10秒)被刷新,不断向服务器发送请求。图8与图9为重构前后的CPU使用率曲线图。

从图8和图9的对比可以看出,重构后的系统CPU使用率总体上都是比重构前要低的。前10秒左右是Visual Studio工具编译部署项目的时间,可以看出使用MVC框架后编译部署过程CPU使用率是使用前的约4倍。这是因为使用WebForm在很大程度上要依赖比较多还没有编译好的部件,很多如图片上传、文件生成、视图渲染的功能都要开发者自行通过源代码实现,编译起来就要耗费相对较多的资源;而MVC框架将绝大部分的部件封装成为二进制文件,只需要编译主要的代码就可以了,CPU使用率自然就低了。

约过了10秒后,是页面接受请求进行逻辑处理的过程。可以看出重构后的系统除了第一次处理请求CPU使用率相对较高,为23%左右,接下来处理请求的CPU使用率都是不到10%。而重构前的系统CPU使用率一直都在波动,居高不下,平均在20%。产生这些差异的原因是,.NET MVC框架在页面第一次被请求的时候就生成了页面的缓存,往后的请求处理就不再需要进行处理页面渲染的步骤;同时,因为服务器已经装上了.NET MVC框架的组件,运行的时候就不再需要额外的CPU资源,所以如果没有在处理请求的情况下CPU使用率都接近0。而传统的WebForm模式没有缓存机制,每次加载都需要重新进行页面渲染工作,CPU使用率偏高,而且在解释非系统自带组件也需要占用一定的CPU资源。

6 总结

本文使用了 MVC框架进行了论文管理系统的重构,按系统的功能进行抽象分类,各个部分的功能分成了各个模块,使耦合性尽量低,并通过接口进行交互。对于系统的数据层,运用ORM与Active Record技术进行重构,为数据处理提供了更加直观便捷、便于维护的方式。

对重构前后的代码度量值、代码克隆分析和CUP使用率的对比结果表明,使用MVC框架对于解决代码冗余、增强系统可维护性和运行性能都有比较大的帮助。

致谢:本文作者向指导老师孙宇锋教授、李林同学以及有关老师表示真诚的谢意!

参考文献:

[1] 吴昌钱.net框架下软件开发模式研究[J].哈尔滨师范大学自然科学学报,2014,30(3):99-102.

[2] 林永良,胡建平,吴树林.基于.NET MVC架构下的科研项目管理系统[J].计算机系统应用,2014(12):217-220.

[3] 吴胜,刘建波,刘士彬. MVC框架下内容管理系统的探索与实现[J].微计算机信息,2010(36):30-32.

[4] 周泉.浅谈从 WebForm 开发模式到 MVC 开发模式的发展[J].计算机光盘软件与应用,2012(15):248-270.

[5] 苑庆涛,张新柱,马博,等. 基于 MVC的数字化管理平台[J].计算机技术与发展, 2013(12):164-167.

[6] 龚兰兰.基于.Net MVC4 的Code First 模式数据库开发和迁移[J].信息通信,2014(12):99-99.

[7] 许日丹,杨俊.基于Rails框架的ActiveRecord模块研究与应用[J].软件导刊,2007,57(13):127-129.

上一篇:spring框架范文 下一篇:ssh框架范文

友情链接