基于MVC框架的系统重构方法研究与实践

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:yaoshikyo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:ASP.NET的WebForm开发模式控件丰富,能够迅速搭建Web应用,但是存在可重用性差、安全性低、运行速度慢等缺点,不适合中大型系统的开发。为了提高论文管理系统的安全性、可维性和运行性能,采用ASP.NET MVC框架模式进行系统结构的重构,利用对象关系映射和Active Record技术进行数据层的重构。对比测试结果显示,重构后的系统可维护指数提高,圈复杂度、代码克隆数和CPU使用率降低。
  关键词:计算机软件;系统重构;MVC框架;ASP.NET
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)22-0063-04
  Abstract: The WebForm ASP.NET 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 ASP.NET 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; ASP.NET
  1 问题背景
  ASP.NET中的WebForm是一种可视化开发模式,用户通过拖拽控件进行网页界面的设计,Visual Studio编辑器自动在网页文件生成相应的代码,然后双击控件或者在事件视图中双击相应事件,将在另外一个对应的.CS文件中进行编码,实现对网页控件的交互操作[1]。由于开发方便、上手容易,WebForm模式在小型项目开发中广泛应用。但是对于中大型项目,采用WebForm模式进行开发的话会出现不少问题:项目中充斥着大量的网页文件和后台代码文件,文件数量过多难以管理;项目网页文件与逻辑代码文件紧密耦合,代码重用性不高;网页代码中暴露过多的系统实现细节,容易遭受网络攻击导致信息安全问题;数据库操作的代码实现比较繁琐,每次涉及到数据库交互操作都要重新写SQL语句;功能扩展麻烦,当需要扩展新的功能页面时需要重新设计网页界面和进行编码。
  我们在开发论文管理系统的过程中,初期为了快速实现系统的主要功能,使用了 ASP.NET WebForm模式来进行项目的开发工作。但随着项目的进行,由于系统功能的不断扩展,同时用户需求有了一些更改,WebForm模式带来的问题逐步显露出来。针对开发工作中出现的问题,项目组决定使用ASP.NET MVC框架重构系统,希望开发工作向着代码的结构规范、冗余度低、重用性好,系统扩展方便、安全性更高的方向发展,使系统具有更高的稳定性和可维护性。
  2 MVC框架分析
  MVC框架是现代大型项目开发中广泛使用的开发模型,其基于面向对象的设计模式极大提高了程序的开发速度,降低了功能扩展维护带来的不便,使功能像组件一样自由变换[1]。
  2.1 MVC核心部件
  MVC框架模式将系统按功能模块化地分成三个主要的部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务,相互之间通过接口进行交互[2],其功能划分及相互关系如图1所示。
  跟传统的WebForm模式相比,ASP.NET MVC框架放弃了很多有缺陷的特性,如Code-behind页面、服务器控件、数据绑定、URL Rewrite等,取而代之的是Controller、HtmlHelper、Routing等类库和组件[3]。与WebForm相比,ASP.NET MVC在Web开发领域显得更加专业化,对Web开发的效率提升非常明显,特别是在规模较大、功能点多、页面数量多逻辑结构复杂的大型应用程序开发中,MVC模式在健壮性、代码重用和结构方面有了很大的提升 [4]。使用MVC架构开发出软件代码有较强的可理解性、重用性、系统稳定性、可维护性,能够减少软件的修改、再次开发等方面的工作量,减少了在系统方面所投入的成本[5]。
  2.2 ASP.NET MVC框架运行流程
  在ASP.NET MVC4中,所有请求都是通过项目根目录中的一个Global.asax文件作为唯一的入口,客户端向服务器提交的请求首先由这个文件接收,由该文件执行Application_start()方法实例化启动进程,并调用路由匹配注册表确定指派到某一个控制器处理。控制器接到请求后,可以调用某一个对象模型来处理;模型根据相应的业务逻辑进行逻辑处理,并且与数据库进行交互,返回所需的数据;最终控制器加载并渲染指定的视图来将处理好的数据呈现给用戶。系统采用ASP.NET MVC 后的运行流程如图2所示。   3 系统结构的重构
  在ASP.NET的WebForm模式中,系统的代码模块是按页面来分的,也就是说有多少个页面就有多少个逻辑处理文件,每个代码文件仅仅处理自身页面的代码逻辑,这种划分代码模块的缺点是,一旦页面过多,就会变得很杂乱,代码文件查找困难,维护难度高,而且不利于日后功能迭代或者功能修改。而在ASP.NET 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是随着面向对象思想的成熟而产生的一种软件开发技术。目前主流的框架产品,如ASP.NET MVC、Hibernate等,已经将ORM集成在内。Microsoft Entity Framework 是一个对象关系映射(ORM)工具,它能将关系型数据转换成.NET数据对象,也可以将.NET数据对象转换成关系型数据 [6]。
  Active Record是一种领域模型模式,最早由Rails提出,它在ORM的基础上,把负责持久化的代码也集成到数据对象中[7]。传统的ORM只是把数据对象与负责持久化的代码分隔开来,数据对象只是单纯的包含了自身的数据结构体。而在Active Record中,他们不仅是数据实体,而且包含了业务逻辑,集成了把自己持久化的操作。在ASP.NET 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]。
其他文献
摘要:该文在介绍MOOCs创新特性及应用现状的基础上,分析了MOOCs应用所存在的问题,并指出高校要应对MOOCs发展浪潮带来的机遇与挑战,应该变革教育观念、改造高校课程教学资源、实现多模式一体化教学。  关键词:MOOCs;应用;高校教学;变革  中图分类号:G424 文献标识码:A 文章编号:1009-3044(2016)24-0173-02  教育资源建设是高校教育信息化的基础,推进优质教学
摘要:当前对于数据有效的处理和分析研究逐渐受到重视,而数据可视化又是数据分析中一项最重要的方法。对此,基于图形语法的优势提出一种新的数据可视化方法设计,通过对数据的转换及图形标记、图形可视化编码以及标度及坐标系变换,实现对数据可视化的转换。通过对比实验验证,该方法与传统数据分析方法相比具有更高的交互率,可以为数据分析提供更加快速的可视化帮助。  关键词:图形语法;数据;可视化;交互性  中图分类号
【摘 要】 《小学语文课程标准》中强调:“能不拘形式地写下自己的见闻、感受和想象,注意把自己觉得新奇有趣或印象最深、最受感动的内容写清楚。”以《盐水浮鸡蛋》这个实验为例子,引导学生留心生活,关注生活中的科学,做一个善于发现,善于思考,善于推断,善于书写生活中的人。生活就是语文,语文就是表达生活。  【关键词】 动手兴趣;激发自信;培养观察力  【设计理念】  《小学语文课程标准》中强调:“能不拘形
摘要:随着计算机技术的快速发展,Flash广泛应用于网络和动画制作,使互联网变的越来越精彩。但Flash动画仍存在许多不足,在我国动画发展的道路上,还需不断的努力与创新。  关键词:Flash;动画;制作过程  中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2009)15-4012-02    On the Flash Cartoon and Animation  LIU G
去年暑假,爸爸给我买了一份特殊的礼物,它长着一双圆溜溜的眼睛,黄白相间的身子胖嘟嘟的,它是一条模样憨态可掬的小狗。  开始,我还有点儿害怕,不敢靠近它。爸爸微笑着说:“小狗很可爱,它的毛摸起来特别舒服。”他边说边抚摩着小狗,小狗乖乖地蹲在地上,还不时蹭蹭爸爸的手。看着看着,我壮着胆子摸了摸它,没想到它不但没咬我,还慢慢向我靠近。  后來我和小狗越来越亲近,我也越来越喜欢它。看着它那肥嘟嘟的样子,我
摘要:针对基于推理的OWL-S/UDDI匹配算法在同一级结果间不能进一步区分匹配度导致查全率和查准率不高的问题,提出了一种基于本体概念相似度计算的服务匹配算法,该算法分别按服务的基本描述、功能和非功能(QoS)三个层次进行匹配,提高了服务匹配效率。  关键词:语义;Web服务;OWL-S;服务匹配  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2009)15-3989-0
摘要:创新创业背景下,针对应用型本科院校工程科技人才培养面临的问题,以物联网工程专业为例,阐述了校企“协同办学,协同育人,协同就业”的人才培养模式,构建了校企协同应用型本科人才培养体系,采用“2.5 0.5 1”人才培养模式。  关键词:创新创业;人才培养模式;工程科技人才  中图分类号:G642 文献标识码:A  文章编号:1009-3044(2019)07-0162-03  Abstract:
推荐理由  王国维是中国近代享有国际声誉的著名学者,他的专著《人间词话》在继承古典诗学的基础上,借鉴西方学术思想,创造性地提出了“境界”“有我之境”“无我之境”“写境”“造境”等批评话语,成为近代中国文学评論和美学思想开风气之先的集大成者。大学时代,读了余秋雨的散文《一个王朝的背影》,王国维的名字第一次出现在我的眼前。因为喜欢《红楼梦》和叔本华的哲学思想,自然也就成了王国维的“铁粉”,他借用西方悲
星期六的中午,妈妈在厨房炒菜,只听她大聲叫道:“邓钰萱,家里没盐了,你去买一点儿!”正在专心致志地看书的我,便马上风一样地“飞”过去,接过妈妈给我的100元大钞。“呀,我还是第一次拿面值这么大的钱,真是既紧张又兴奋!”我在心里默默地想着,手里紧捏着大钞,往离家不远的超市跑去。  一进超市,哇,物品真多呀!有五颜六色的糖果,有各式各样的衣服,有奇形怪状的果冻……各种物品分门别类,琳琅满目,看得我眼花