浅析ASP.NET MVC技术及实现

来源 :科教导刊 | 被引量 : 0次 | 上传用户:mnbmnbmnbmnbmnb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要如何更好利用设计模式来设计软件,MVC框架提供一个好的选择,在这个模型下会强行把业务逻辑层和表现逻辑层分离,为软件后期设计及维护提供支持,是软件开发中必须要掌握的模型。尤其是大型软件,能起到事半功倍的效果。
  关键词asp.net MVC Model View Controller Action
  中图分类号:TP31文献标识码:A
  
  1 引言
  MVC框架在JAVA语言中已经出现了许多年,但在2008年微软才推出了ASP.NET的MVC框架1.0,现在MVC2.0也已经到了RC版本,预计年内将推出正式版。那么MVC框架和我们平常ASP.NET编写的WEB程序有什么不同又有什么优势呢?
  2 传统的ASP.NET WEB
  ASP.NET是ASP编程语言的一个全新升级,它不是一个过程式的语言,而是一个纯粹的面向对象的语言,在引入的.NET框架中提供了一个虚拟机,所有的代码、语句等先编译后都加载到虚拟机上,再由虚拟机编译执行。由于需要快速开发,它的开发方式和桌面级开发极为类似。它提供了大量的WEB控件,使得开发变得简单快速,可能只是简单的拖放和设置就能完成一个在ASP环境下很复杂的代码。ASP.NET的出现成为RAD(快速应用开发)的首选工具,也为其推广创造了条件。
  3 ASP.NET的缺点
  但是简单的背后,其实VS.NET集成开发环境已经替你完成了很多工作。但同时也产生了大量的冗余代码,当你在查看WEB页面的HTML代码时会发现,生成的HTML很长也很复杂,有大量隐藏域字段,用的WEB控件越多,隐藏域就会越长,由于采用了加密,会发现有大量不可知代码。使得HTML语言的设计者无所施从,尤其是美工人员,因为不可能要求美工也要理解编码,从而间接地对网站编写造成障碍。
  4 为什么要用MVC模型
  MVC模型是由三大层构成,分别是模型-视图-控制器(MVC:Model-View-Controller),如图。它是把一层就可以做的到的东西进行了分离,看上去把简单的东西复杂化了,但是一旦发生了改动或客户需求发生变化,哪怕是表现层需要换界面,因为分了层,大部分的代码是不需要变化,只需要改动变化的那一层即可,后期的维护成本会大为提高。因此,将需要变化的分离开。业务逻辑会变,所以Controller要分离,表现会变,所以View要分离,Model会变,所以Model要分离。
  
  
  MVC的优势在于:它把耦合性的页面作了拆分,层与层绞合降低,如果是哪一层发生改变只需改动相应层即可。MVC的优势:强制分离的MVC使得管理应用程序变得更加容易控制,可理解,可重构性增强。并抛弃ViewState这个的概念,使得开发者几乎能够完全控制页面的行为。能够更好的使用测试驱动开发。因为有了这个框架,开发人员不得不按照其框架进行开发,也就是说你想回头,不分离业务逻辑层和表现逻辑层都不可能。
  对MVC框架来说其中:模型部件是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,他独立于具体的界面表达和I/O操作。视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。控制器部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。
  5 ASP.NET下的MVC框架特征
  (1)能实现应用程序基本任务(输入逻辑,业务逻辑和UI逻辑)的分离,支持测试及测试驱动开发。可以使用与.NET框架相兼容的任何单元测试框架测试。
  (2)实现了强有力的URL映射组件,支持在应用程序中构建易于理解的可搜索的URL。URL中可不必包括扩展名,且设计还支持URL重命名模式。
  (3)支持在现有ASP.NET页面(.aspx文件)、用户控件(.ascx文件)以及母版页面(.master文件)标记文件中把标记用作视图模板。
  (4)支持现有ASP.NET特征。ASP.NET MVC框架支持使用例如表单和Windows认证,URL授权,会员和角色,输出缓冲和数据缓冲,会话和配置状态管理,等及其它ASP.NET特征。
  (5)ASP.NET MVC框架以不同于ASP.NET网站应用程序的方式把URL映射到服务器代码。MVC框架不是把URL映射到ASP.NET页面或HTTP处理器程序,而是直接把URL映射到特定的控制器类。而后,由控制器类负责处理发来的请求。
  (6)在ASP.NET MVC框架中,模型、视图和控制器组件被强行分离开来。控制器组件将定位控制器中适当的行为方法,取得用作行为方法的参数值,处理执行行为期间所有可能发生的错误,并生成要求的视图。必须为每一组组件进行编程,进而达到分层目的。
  (7)通过提供了一个URL映射引擎,ASP.NET MVC框架在把映射URL到控制器类方面提供了相当的灵活性。使用这种映射引擎来定义路由规则,然后ASP.NET MVC框架使用这些路由规则来计算发来的URL请求并选择要执行的控制器。
  6 实例分析
  在VS2008中新建一个MVC项目后,会有一个DEMO,我们就来看一下这个DEMO是如何分层来实现MVC的。
  (1)default页:default页为空,没有写任何代码,ASP.NET使用了URL重写 ASP.NET中叫做UrlRouting进而进行重定向的。在Global.asax.cs文件中定有页面重写规则:
  new { controller = "Home", action = "Index", id = "" }动作行为控制器Home
  (2)Controller(控制器):如上,我们在Controllers文件夹下我们可以找到HomeController.cs, 这里使用了一个简单约定, 就是如果URL中获取到的Controller名字是Home, 则他的Controller类名就是HomeController.。只需在其URL中的名字后加上“Controller”
  (3)Action(动作):控制器对行为进行指派。在HomeControllers.cs代码段:
  public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); }
  一个Controller可以包含多个Action, MVC模式中Controller角色的具体实现逻辑都是在Action中的。因为我们的Action是Index, 所以自然就要调用Index()方法.这里将"Webcome to ASP.NET MVC!", 这里的Model角色就是这句话, 也就是一个字符串对象。Controller的一个重要作用就是将Model对象传递给View,也就是具体的页面. 传递的方法就是将这个字符串放到ViewData这个集合对象中, 然后在页面上也调用这个对象获取数据。
  (4)View(视图):跳转到View显示数据。
  public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View("index"); }
  (5)浏览器响应:在View中没有任何代码,只需一句:
  <%= Html.Encode(ViewData["Message"]) %>
  如上,一个简单的软件代码编写被强行分离,在传统ASP.NET代码中只需要一个页面即可实现这个功能,很明显MVC框架比传统ASP.NET编写的代码要复杂的多,但是MVC框架下的代码分层明确,如果是界面需要改动,那么只需改动View。逻辑需要改动只需改动Controller,业务需要改动只需改动Model,因这个Demo太过简单,Model体现的不是很明显。对于大型软件设计来说,很明显降低了其耦合性,可维护性明显增强。
  7 小结
  采用MVC设计模式可以在满足对界面要求的同时,使软件的计算模型独立于界面的构成。本文首先介绍了MVC的三个组成构件(模型构件、视图构件和控制构件),以及实现基于MVC的应用需要完成的工作,对分层及为什么要分层及分层后的效果作了介绍,并对ASP.NET MVC框架的一个DEMO作了说明。
  
  参考文献
  [1]龚赤兵.Web开发新体验:ASP.NET 3.5 MVC架构与实战.电子工业出版社.
  [2]李万宝等.ASP.NET企业级开发案例精解.中国林业出版社.
  [3]吕高旭.ASP.NET商业级数据库网站开发实战.电子工业出版社.
其他文献
摘要针对矿井灾难事故频率高,牺牲人员多,经济损失大的问题,提出了灾难发生时如何减少人员的伤亡的课题。文中分析了矿灾发生之后,导致矿工大量伤亡的原因,对现有的井下救生 装置的实用性进行了分析,并提出了井下救生装置的改进思路。  关键词矿井灾难 装置实用性 改进思路  中图分类号:TD2文献标识码:A    1 矿井灾难的原因分析  在以人为本的和谐社会,尽一切可能保证井下矿工的人身安全应当是矿山企业
1946年,雷神公司展示了世界上第一款商业化微波“炉”——Radarange.这款Radarange原型机的目标客户是三明治便利店,它将热能从水冷式磁控管馈入一个小型外部容器,35秒内即可
期刊
输电线路施工本身并不具备技术难度,但是结合不同条件下输电线路施工,分析和探索不同气候下应采取的措施,通过对安全工作的探讨,建议性提出不同气候下应采取的措施和方法,以及需要
摘要现场总线在现场仪表之间、现场仪表与控制设备之间构成网络互连系统实现全数字化、双向、多变量的数字通讯,这将提高系统的可靠性和抗干扰能力,同时节省了整个系统的投资、安装及后期维护费用。基金会现场总线(Foundation Fieldbus)是众多现场总线中,在面向过程控制领域中较为先进的现场总线标准。本文在对FF总线协议进行分析的基础上,根据FF总线通讯协议和对FF设备的基本要求,设计出了一种可满
患者故事李女士:我今年30岁,最近体检发现一项结果异常:宫颈涂片巴氏III级。我拿着体检报告去妇科就诊,医生说可能宫颈有病变,需要做阴道镜检查以明确诊断。阴道镜检查具体是
摘要近年来,随着社会的发展和科学技术的进步,人类开始迈入数字化的智能社会,开始出现了各种各样的智能化设备及应用。家居智能化成为了一个越来越热门的话题。它给人们的生活带来了巨大的改变,智能家居主要是由中央处理器自动控制与无线控制两个部分组成,日益成熟的无线控制技术在家居智能化方面得到了越来越广泛的应用。本文介绍了一种基于AT89S52单片机实现的简单低成本无线开关设计,并应用于智能家居中。  关键词
1引言在港口、仓库或车站,经常进行散装物料自动称重包装的工作。它要求称重系统测量精度高、响应速度快、稳定性好、自动化程度高,以适应现代化装卸的要求。本文介绍的测重系
目的:调查了解湖南省部分农村地区儿童问题行为的发生情况,分析湖南省部分农村地区儿童问题行为的相关因素,为农村社区卫生服务机构开展儿童问题行为的干预奠定基础。 方法:此
摘要作为现代大城市,武汉市城市规划所面临的诸多问题是众多大城市都必须面对的问题。随着武汉经济的高速发展,武汉市的发展也越来越快。在面对这些大城市问题时,只要合理的定位,及时的改造调整,注重保护生态环境,用长远的眼光去解决交通问题等;就可以使我们的城市规划走上可持续发展的道路。  关键词大城市 规划 发展  中图分类号:TU-8文献标识码:A    现代城市是第二次产业革命的产物。随着工业化的发展吸
摘要城市,是一个充满活力的地方。不熟悉环境会使你无法到达目的地而浪费很多时间,甚至迷失了方向。在具有一定规模的现代城市里,没有足够的导示系统会使行动产生困难。城市导示系统设计是为城市环境服务的,说到底,就是为人提供服务。生活中的环境越复杂,越是需要一个完善的、科学的导示系统。因此,城市导示系统设计是影响城市管理与服务的重要因素,并深刻意识到城市导示系统设计在城市公共环境中的重要意义。  关键词环境