




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计开发本栏目责任编辑:谢媛媛基于ASP.NET 的MVC 框架的应用研究汪斌(华东交通大学信息工程学院,江西南昌330013摘要:ASP.NET 是一个统一的Web 开发模型,MVC 是较受欢迎的设计模式,在ASP.NET 3.5基础之上,ASP.NET MVC 提供了一个新的模型-视图-控制器框架;通过对ASP.NET MVC 框架的研究,完成了一基本实例的应用分析。关键词:ASP.NET ;MVC ;设计模式中图分类号:TP311文献标识码:A 文章编号:1009-3044(200907-1629-03Research and Application on MVC Framework
2、 in ASP.NETWANG Bin(School of Information Engineering,East China Jiaotong University,Nanchang 330013,ChinaAbstract:ASP.NET is a unified Web development model,MVC is a popular design pattern,ASP.NET MVC provides a new Model-View-Controller framework on top of the existing ASP.NET 3.5runtime.After the
3、 research of ASP.NET MVC framework,this paper completes the applied analysis of a basic project.Key words:ASP.NET;MVC;design pattern1引言面向对象技术的出现和广泛使用,使得软件的可复用性在一定程度上已经有所解决,但由于软件规模和复杂程度的增加以及其他很多方面的原因,人们对软件复用的要求同时也越来越高。设计面向对象的软件较难,而设计可复用的面向对象的软件就更难。结构清晰、便于复用、易于维护和扩展,是今天软件设计所追求的目标,因此将设计面向对象软件的经验记录成“设计模
4、式”。ASP.NET 是一个统一的Web 开发模型,包括使用尽可能少的代码生成企业级Web 应用程序所必需的各种服务,是作为.NET Framework 的一部分提供。当编写ASP.NET 应用程序的代码时,可以访问.NET Framework 中的类,也可以使用与公共语言运行库(CLR 兼容的任何语言来编写应用程序的代码,这些语言包括Microsoft Visual Basic 、C#、JScript.NET 和J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的ASP.NET 应用程序。MVC (Model-View-Controller ,模型-视图-控制器模式是
5、上世纪70年代末由Trygve Reenskaug 提出,运用于Smalltalk 平台上,至今已被广泛使用的一种软件设计模式。MVC 模式的目的是增加代码的重用率,减少数据的耦合度,使得软件可维护性、可修复性、可扩展性、灵活性以及封装性大大提高。最近几年被推荐为Sun 公司J2EE 平台的设计模式,并且受到越来越多的使用ColdFusion 和PHP 的开发者的欢迎,随着Microsoft 公司的.NET 战略的推进,众多程序员也开始在探索如何将MVC 模式应用到ASP.NET 开发中去,以期缩短系统的开发和实施周期,节约成本。2MVC 模式研究MVC 是一个设计模式,它强制性的使应用程序的
6、输入、处理和输出分开。使用MVC 应用程序被分成三个核心部件:模型、视图、控制器,其模式如图1所示。它们各自处理自己的任务。MVC 模式的核心是将模型、视图、控制分离,从而可以实现软件的层次更加分明,具有更好的可扩展性和可维护性。但目前成熟的MVC 开发框架一般都是针对于WEB应用,对于传统的C/S 程序,成熟的MVC 开发框架还较少,一般都是利用相应的设计模式来自行开发,开发量大,并且质量在很大程度上依赖于具体开发人员的水平。2.1Model 角色即模型角色,用于存储数据的组件(与领域模型概念不同,表示企业数据和业务规则。在MVC 的三个角色中,模型拥有最多的处理任务。例如它可能用像EJBs
7、 和ColdFusion Components 这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。2.2View 角色即视图角色,根据Model 数据进行内容展示的组件,是用户看到并与之交互的界面。对老式的Web 应用程序来说,视图就是由HTML 元素组成的界面,在新式的Web 应用程序中,HTML 依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash 和像XHTML ,XML/XSL ,WML 等一些标识语言和
8、Web services 等,因此如何处理应用程序的界面变得越来越有挑战性。MVC 一个的优点是能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。2.3Controller 角色即控制器角色,接受并处理用户指令(操作Model ,选择一个View 并输出内容。控制器接受用户的输入并调用模型和视图去完收稿日期: 2008-12-22图1MVC 模式示意图ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.5,No.7,
9、March 2009,pp.1629-1631E-mail:xsjl Tel:+86-551-569096356909641629本栏目责任编辑:谢媛媛软件设计开发Computer Knowledge and Technology 电脑知识与技术第5卷第7期(2009年3月成用户的需求。所以当单击Web 页面中的超链接和发送HTML 表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。2.4优缺点分析MVC 模式的优点在于低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性,有利于软件工程化
10、管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。MVC 的缺点是由于它没有明确的定义,所以完全理解MVC 并不是很容易。使用MVC 需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC 同时也意味着将要管理比以前更多的文件。MVC 并不适合小型甚至中等规模的应用程序,花费大量时间将MVC 应用到规模并不是很大的应用程序通常会得不偿失。MVC 设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果要隔离模型、视图
11、和控制器的构件,可能需要重新构造应用程序,尤其是应用程序的构架方面。如果能够接受MVC ,并且有能力应付它所带来的额外的工作和复杂性,MVC 将会使软件在健壮性、代码重用和结构方面上一个新的台阶。2.5MVC 模式小结MVC 的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。从表面上看,MVC 与三层架构有些类似:View -UI Layer (表现层、Controller BL Layer (业务逻辑层、Model DA Layer (数据访问层,其实不然,
12、MVC 是表现模式(Presentation Pattern ,而三层架构是架构模式(Architecture Pattern ,二者之间并没有太多可比性。MVC 模式中,有两个分离,一是View 和数据(Model 分离,能够为相同的Model 开发不同的View 进行展示,分离可视与不可视的组件,能够对Model 进行独立测试(只有View 到Model 的单向引用,二是View 和表现逻辑(Controller 分离,分离逻辑与具体展示,能够对逻辑进行独立测试(只有Controller 到View 的单向引用。3ASP.NET MVC 模式研究在ASP.NET 开发中,WebForms
13、是一种主要开发方式,WebForms 将Web 开发抽象成一个组件模型,使用方便,入门容易,使控件产业大大加强,但另一方面,WebForms 封装太强,以至于程序员甚至会误认为“不是Web 开发”,WebForms 入门容易,用好难,不易进行单元测试,前后台不易配合。ASP.NET MVC 框架是既ASP.NET WebForms 后的又一种开发方式。它提供了一系列优秀特性,使ASP.NET 开发人员拥有了另一个选择,但并非为了取代WebForms 。使用ASP.NET MVC 框架进行开发与ASP.NET WebForms 截然不同,ASP.NET MVC 框架中一个关键特性就是基于URL
14、的导向,Controller 用于接受用户指令、处理并使用View 进行输出;另一个重要特性就是“一切都是可以替换的”,其中的典型就是可替换的View 组件,ASP.NET MVC 框架默认使用WebForms 作为视图引擎,不过ASP.NET MVC 可以由开发人员自行定义视图引擎,ViewEngine 还增加了“Partial View ”与定位视图的能力。ASP.NET MVC 框架综合采用了一些主流开发技术的优点,如在提高性能方面,Action Filter (缓存与压缩作为其特有的功能,能够以AOP (Aspect Oriented Programming ,面向方面编程的方式轻松实
15、现各种功能,在新的Model Binder 机制,能够直接为Action 生成复杂参数;在提高客户体验方面,作为Web 开发技术事实标准的AJAX 技术,非常自然和方便地融入了ASP.NET MVC 应用程序中;在单元测试方面,作为ASP.NET MVC 诞生的目的之一,其任何组件几乎都能进行单元测试;在扩展性方面,ASP.NET MVC 的“任意方面”都可以进行扩展,而MVCContrib 便是专注与此的开源项目。Filter 是ASP.NET MVC 框架设计中的亮点,能够充分发挥开发人员主动性来实现必要的功能,最新的ASP.NET MVC 框架中将Filter 拆分为Authorizat
16、ion Filter ,Exception Filter 与普通的Action Filter 三种,分别处理不同的工作。ASP.NET MVC 的特点,一切都是可替换的,包括ViewEngine 和Action Filter ;一切都是可测试的;公开源代码,可以修改但不可重新发布。ASP.NET MVC 的优势在于直接,Web 开发就是Web 开发;为可测试性设计,易于对界面逻辑进行单元测试;易于后台与前台开发人员的配合。4ASP.NET MVC 实例分析 进行ASP.NET MVC 应用程序开发,需先安装好.NET Framework3.5的IDE :Visual Studio 2008(下
17、面简称为VS ,然后从微软官方站点下载ASP.NET MVC 框架安装(由Castle 的MonoRail 而来,目前已经历经数个版本,在VS 中新建C#Web 项目中选择ASP.NET MVCWeb Application 模板,在弹出对话框中可选择同时创建单元测试项目,确定后就会出现新建好的两个工程。程序引用程序集如图2所示,在System.Web.Extensions 中已包含对AJAX 的引用,数据库操作方面,也提供了System.Xml.Linq 引用来简化和提高数据库操作效率。ASP.NET MVC 结构如图3所示,程序Views 中的每个文件夹都对应一个Controller ,比
18、如Views/Home 就对应Controllers/HomeController.cs ,About.aspx 和Index.aspx 这些文件就是View ,它们对应Controller中的Action 。Default.aspx 文件在ASP.NET MVC 中是用于重写的,而routing 等配置是写在Global.asax.cs 文件中。 下面以Controller/HomeController.cs 为例,解释其程序的关键代码,如下,为便于理解,代码注释按顺序编号。/*1.HomeController 对应Views 中的Home 文件夹*/public class HomeCon
19、troller :Controller/*2.下面Action 的名字是Index ,默认情况下对应的是Views中此图2程序引用程序集图3ASP.NET MVC 结构1630Controller(HomeController对应文件夹(Views/Home下的同名的aspx文件(Views/Home/Index.aspx*/public ActionResult Index(ViewData"Title"="Home Page"ViewData"Message"="Welcome to ASP.NET MVC!"
20、/*4.这个是要显示的View的名字.默认情况下对应的是同名文件,也可以自己指定*/return View("Index"/*3.这个Action叫About,默认情况下对应的是(Views/Home/About.aspx*/public ActionResult About(ViewData"Title"="About Page"/*5.下面的语句和return View("About"是一个效果的*/return View(;通过以上注释可以清楚地表明了Controller/Action与Views中的关系。访问这些网页的方式类似于http:/localhost/Views/Home/ Index.aspx和http:/localhost/Views/Home/About.aspx。5结束语ASP.NET MVC框架是建立在ASP.NET3.5版基础之上,开发人员可以利用许多现有的ASP.NET3.5功能,如定位,授权,简介等,使用特定的Visual Studio2008MVC模板建立自己的Web应用程序,并为Web应用程序选择特定的单元测试结构。ASP.NET MVC框架定义了一个特定的模式的Web应用程序文件夹结构并提供了一个基础级控制器来处理和推进“动作”需求。MVC框架的各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通信基站建设劳务分包合同
- 天津天狮学院《教育机器人与应用》2023-2024学年第二学期期末试卷
- 山西省太原市第四十八中学2025届高三年级三诊物理试题试卷含解析
- 宁夏银川市兴庆区一中2024-2025学年普通高中质量检测试题(二)物理试题含解析
- 江西农业工程职业学院《精神神经系统整合课程》2023-2024学年第一学期期末试卷
- 江苏省南通市2024-2025学年中考模拟最后十套:生物试题(四)考前提分仿真卷含解析
- 上海民远职业技术学院《西牙语》2023-2024学年第二学期期末试卷
- 辽宁省本溪高级中学2025届高三第一次统测英语试题含解析
- 山东省滨州市邹平县重点中学2025年高中毕业班第一次诊断性检测试题物理试题试卷含解析
- 益阳师范高等专科学校《计算机辅助绘图基础》2023-2024学年第二学期期末试卷
- OSCE模式下护理技能竞赛考核试题与答案
- 第十四届全国海洋知识竞赛活动参考题库(含答案)
- 北师大版四年级下册应用题专项练习【含答案】
- 物品接收单模板(接受联、存根联)
- 抗滑桩施工危险源辨识与评价及应对措施
- 语文园地五(识字加油站、我的发现)
- 建设单位业主方工程项目管理流程图
- 发展心理学第四节-智力发展
- 压力管道检验计算案例
- 碎石挤密桩复合地基施工工法解读
- 初中花城版八年级下册音乐4.狂欢之歌(15张)ppt课件
评论
0/150
提交评论