职称论文发表 发表论文
职称论文 发表论文 合作流程 联系方式 论文发表
职称论文发表 会员登录 用户名: 密码: 我要注册
职称论文发表网   首页   经济论文 |法学论文 |理工科论文 |管理学论文 |计算机论文 |文史论文 |医学论文 |教育论文 |艺术论文 |社会学论文 |政治论文 |试题 |应用文 |论文投稿 |职称评定 |教案 |论文关键词 |电子商务 |体育论文 |学术机构 |发表论文 |教育资讯 |医学资讯 |物联网论文 |中国论文网 | 职称论文
职称论文 本站论文搜索
职称论文 设为首页 职称论文发表网 收藏本站 职称论文发表 联系我们
职称论文  首页-->计算机论文-->计算机应用论文-->文章正文
ASP.NET MVC中基于AOP的异常处理的实现

作者 :彭设强 郭孜 鲁徐更新时间:2012-11-1

职称论文发表
职称论文发表 专业提供:发表论文、论文发表、毕业论文、职称论...
住在汉口网
住在汉口网是一个专业提供汉口房产信息、车辆服务、生活服务、招...
职称论文网
职称论文网提供:发表论文、论文发表、毕业论文、职称论等服务。
(1通信指挥学院军事高技术教研室 湖北 武汉 430010 2福建省军区教导大队 福建 福州 350000 3军事经济学院襄樊分院电教中心 湖北 襄樊 441000)
摘 要:通过对AOP技术的研究,结合军队软件开发的特点,设计并实现了ASP.NET MVC开发框架的异常处理组件,为.NET软件开发人员提供了一种基于MVC的高效的组件调用方式。
关键词:开发框架;AOP;ASP.NET MVC;组件调用
随着军队信息化建设的不断发展,如何高效、规范地开发软件以满足日益增长的军事需要,成为我军软件开发人员的一个重要课题。应用开发框架是解决此类问题的一种有效方法。
作为一种新兴的软件开发技术,面向方面编程(Aspect-Oriented Programming,AOP)从系统业务逻辑中分离出次要的或辅助性功能,并将之模块化。通过在ASP.NET MVC开发框架中对此类功能的模块化设计和管理,开发人员只需专注于系统的核心业务逻辑,从而大大提供了组件的开发效率和可维护性。
1 基于AOP技术的异常处理组件的设计
1.1 Filter过滤器简介
在实际应用系统中,除了系统的核心功能模块外,往往包括例如访问控制、日志记录、权限管理和异常处理等需分散在系统各个核心业务逻辑中的服务。在OOP设计中,它导致了大量代码的重复,不利于模块的复用。AOP采用一种称为“横切”的技术,剖开封装的对象内部,将那些影响了多个类的公共行为封闭到一个可重用模块,即“方面”。
Filter是一种声明式编程方法,它能在AOP模式下完成用户所需的多种功能。由于其横切于Action之上,因此当Action被执行时,Filter将被调用。在ASP.NET MVC框架中可直接作用于Action全过程中,较其他依赖注入方法更为简便。
1.2 异常处理组件的流程设计
在程序设计的过程和用户的使用过程中,异常的出现是不可避免的。在默认情形下,未经处理的异常在默认页面中会显示错误源代码,给网站带来潜在的安全隐患,因此需要制定统一的错误处理机制,便于更加安全的管理网站。异常处理组件包括三个部分:首先是对异常的捕获、记录和报告,其次是对异常类型的判断,最后是对异常的显示。异常处理的流程示意图(见图1):
2 基于AOP技术的异常处理组件的实现
2.1 自定义异常捕获机制
HandleErrorAttribute类在默认状态下会捕捉所有的异常(包括处理视图时抛出的错误)并根据异常类型显示对应的异常处理页面。HandleErrorAttribute属性及作用(见表1):
开发者可以通过对ExceptionType和View属性的设置,实现不同的异常处理。但为了提高开发效率,本框架对异常进行统一的分类处理。因此,本框架开发了一个自定义的MyHandlerErrorAttribute类用以捕获异常,该类继承了HandlerErrorAttribute类,并将异常情况通过配置文件存入数据库中。异常处理组件的相关类关系见图2。
2.2 异常处理记录的存储设计
为了降低组件与系统间的耦合度,本框架独立创建异常处理的数据表,命名为aspnet_WebEvent_Events,用于存储系统异常的各项属性。
aspnet_WebEvent_Events表的关键字段名称及作用见表2。当被检测的控制器或者方法发生异常时,要将异常信息存储到相关的数据库中,需要配置Web.config文件,并通过webRequestErrorEventMvc.Raise()方法进行调用完成存储过程。
2.3 异常类型的判断及显示设计
为了便于开发者的测试工作,本框架将不同类型异常的显示页面进行划分,利用全局应用程序类Global.asax,通过创建Application_Error()方法,针对不同的异常类型对异常处理进行了统一的路由设置。本框架利用GetHttpCode()方法捕获页面状态代码并将异常显示情况分成四类(见表3)。
Application_Error()方法主要代码如下:
……
HttpException httpException=exception as HttpException;//实例化异常
RouteData routeData=new RouteData();
routeData.Values.Add("controller", "Error");//异常处理路由设置
if (httpException != null)

switch(httpException.GetHttpCode())

//异常类型400,返回视图HttpError400
case 400:routeData.Values.Add("action","HttpError400");
break;
//异常类型403, 返回视图HttpError403
case 403: routeData.Values.Add("action","HttpError403");
break;
……


……
本框架通过Application_Error()方法和MyHandleError过滤器的配合,为开发者提供了完善的异常处理机制,开发者只需要根据自身需求创建相关异常的视图和控制器,即可实现自定义的异常处理功能。
3 基于AOP技术的异常处理组件的应用
3.1 MyHandlerError的Web.config配置
当被检测的控制器或者方法发生异常时,要将异常信息存储到相关的数据库中,需要在Web.config配置文件中设置<healthMonitoring>…</healthMonitoring>配置节,配置节代码如下:
<healthMonitoring enabled="true">
<eventMappings>
<add name="MvcError" type="WebRequestErrorEventMvc"
startEventCode="0" endEventCode="2147483647"/>
</eventMappings>
<providers>
<add connectionStringName=" MySqlConnection "
maxEventDetailsLength="1073741823" buffer="false"
name="SqlWebEventProvider"
type="System.Web.Management.SqlWebEventProvider"/>
</providers>
<rules>
<add name="Controller Error" eventName="MvcError"
provider="SqlWebEventProvider" profile="Default" custom=""/>
</rules>
</healthMonitoring>
其中<eventMappings>…</eventMappings>节点间设置的内容为需要捕获的异常类型,<providers>…</ providers>节点间设置的内容为存储异常的方式,<rules>…</rules>节点间设置的内容为被监测的规则。
3.2 Error视图的创建
当异常出现被数据库记录后,页面将根据异常类型返回视图告知用户。根据ASP.NET MVC开发框架为异常情况的显示在Global.asax的Application_Error()中创建的四种情况,本系统创建了ErrorController及HttpError400、HttpError403、HttpError404、General四个方法。HttpError400方法的实现代码:
public ActionResult HttpError400(string error)

ViewData["Title"] = "对不起,出现异常!(400)";
ViewData["Description"] = error;
return View("Index");

其它三种方法与HttpError400工作原理基本相同。在创建控制器的同时,本系统在Views\Error文件夹中对应的创建了Index.aspx和Error.htm页面。
有时候在Error视图中也会发生错误,这时错误代码仍会呈现在浏览器中,为了避免这种情况的出现,本框架在Web.config文件的customErrors节中自定义错误页面: <error?statusCode="500"?redirect="/Error.htm"?/>,Error.htm将提示用户Error视图出错。
4 结语
通过对AOP技术的研究,为ASP.NET MVC开发者提供了一种高效的组件调用方式,对军队软件开发人员的工作具有一定的意义。
参考文献
1 刘中兵.开发者突击:精通AOP整合应用开发[M].北京:电子工业出版社,2008
2 龚赤兵.Web开发新体验:ASP.NET 3.5 MVC架构与实战[M].北京:电子工业大学出版社,2009
职称论文发表网http://www.issncn.com 职称论文发表网http://www.issncn.com

1
论文首页】【设为主页】【加入收藏】【打印本文】【回到顶部
最新上传
 《美与时代》城市版杂志稿...
 让快乐体育走进孩子们心中
 武昌区开展小学体育教学研...
 中英校际交流,校园足球添...
 《原地单手肩上投篮》教学...
 七年级《篮球运球》教学设...
 职校教师的角色定位
 我对因材施教的看法
 物理教学中德育渗透
 中职德育课堂的应用表现性...
 肺结核治疗综述
 肺结核治疗方案
 肺结核治疗问题
 肺结核50例临床治疗
 肺结核病人护理
职称论文
本站推荐
 武昌区开展小学体育教学研...
 中英校际交流,校园足球添...
 《原地单手肩上投篮》教学...
 七年级《篮球运球》教学设...
 我对因材施教的看法
 中职德育课堂的应用表现性...
 肺结核治疗方案
 肺结核治疗问题
 肺结核50例临床治疗
 肺结核病人护理
 农村城镇化探析
 篮球运动员身体素质训练
 国防经济研究
 公共危机应急保障机制建设
 科研院所物业管理社会化
职称论文发表
所有资料均源于网上的共享资源及期刊共享,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,我们会立即进行改正或删除有关内容!
  网站介绍 联系我们 广告服务 网站导航 投诉建议 服务承诺 人才招聘 版权声明  
  •   投稿邮箱:83041061@qq.com    服务热线:027-62220402 手机: 18907137973
    点击及可直接咨询
    联系地址:武汉市江汉区新华下路江花苑13楼   电子地图
  • Copyright (C) 2007-2009 http://www.issncn.com/ All Rights Reserved.. 鄂ICP备:09016318号
    技术支持:腾浪科技    法律顾问:廖泉冰律师