MVC过滤器-AOP思想初探
2016-07-23 14:35
218 查看
AOP:面向切面编程。“给程序统一添加新功能的一种思想”。
它是对传统OOP编程的一种补充。
OOP关注需求功能模块,封装良好的类,并让他们有属于自己的行为,侧重业务逻辑的实现。
AOP关注通用功能,而不关注业务逻辑,将不属于业务逻辑的部分给抽取出来。例如:日志、异常捕获、权限验证(拦截).
在web应用程序(Webform/MVC),我们登录后经常把用户信息存入Session中.然后再每个页面进行验证 用户是否登录,没有登录就跳转到登录页面。如:
public ActionResult Index()
{
if(Session["User"]==null)
{
return RedirectToAction("/Login/Index");
}
}
这个和业务逻辑 无关,如果每个页面都这样去验证用户是否登录,就太麻烦了。
公共的部分给抽取出来。在ASP.NET MVC中,filter就是一种面向切面的技术了。
AOP是预先定义的一组特性Attribute,使它具有拦截方法的功能,可以让你在执行代码之前、之后,处理你的事情。
ASP.MET MVC中,有ActionFilter,ExceptionFilter。
1.Action过滤器继承ActionFilterAttribute类,Action执行之前执行一段代码,重写OnActionExecuting方法,执行完毕重写OnActionExecuted
所以,我们写一个Action过滤器,在filtreConfig中注册为全局filter,这样执行每个Action都可以去验证Session了。
2.Exception过滤器继承HandleErrorAttribute类,在程序发生异常的时候执行一段代码。重写OnException方法。
在程序添加、删除、修改数据时候,有可能出现异常,我们通常做法都是在每个Action中使用try...catch代码块出现异常弹出异常信息给用户。
这个也是和业务逻辑无关的,如果每个Action中都写try...catch 就显得太臃肿。
简化代码,注册全局的异常过滤器,用来捕捉应用程序的异常,并进行相应的处理(自定义消息返回格式{IsSuccess:xx,msg:xx})
这样当程序出现异常,过滤器已经捕捉到了,并根据自定义的消息格式返回给前台。就不用再每个Action中写try...catch了。简化了代码。
它是对传统OOP编程的一种补充。
OOP关注需求功能模块,封装良好的类,并让他们有属于自己的行为,侧重业务逻辑的实现。
AOP关注通用功能,而不关注业务逻辑,将不属于业务逻辑的部分给抽取出来。例如:日志、异常捕获、权限验证(拦截).
在web应用程序(Webform/MVC),我们登录后经常把用户信息存入Session中.然后再每个页面进行验证 用户是否登录,没有登录就跳转到登录页面。如:
public ActionResult Index()
{
if(Session["User"]==null)
{
return RedirectToAction("/Login/Index");
}
}
这个和业务逻辑 无关,如果每个页面都这样去验证用户是否登录,就太麻烦了。
公共的部分给抽取出来。在ASP.NET MVC中,filter就是一种面向切面的技术了。
AOP是预先定义的一组特性Attribute,使它具有拦截方法的功能,可以让你在执行代码之前、之后,处理你的事情。
ASP.MET MVC中,有ActionFilter,ExceptionFilter。
1.Action过滤器继承ActionFilterAttribute类,Action执行之前执行一段代码,重写OnActionExecuting方法,执行完毕重写OnActionExecuted
所以,我们写一个Action过滤器,在filtreConfig中注册为全局filter,这样执行每个Action都可以去验证Session了。
2.Exception过滤器继承HandleErrorAttribute类,在程序发生异常的时候执行一段代码。重写OnException方法。
在程序添加、删除、修改数据时候,有可能出现异常,我们通常做法都是在每个Action中使用try...catch代码块出现异常弹出异常信息给用户。
这个也是和业务逻辑无关的,如果每个Action中都写try...catch 就显得太臃肿。
简化代码,注册全局的异常过滤器,用来捕捉应用程序的异常,并进行相应的处理(自定义消息返回格式{IsSuccess:xx,msg:xx})
这样当程序出现异常,过滤器已经捕捉到了,并根据自定义的消息格式返回给前台。就不用再每个Action中写try...catch了。简化了代码。
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- jQuery plugin items filter
- 全国哀悼日网站页面变成灰色的filter方法
- 用css filter做鼠标滑过图片效果
- C# MVC模式下商品抽奖功能实现
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- Asp.net mvc实时生成缩率图到硬盘
- 剖析ASP.NET MVC的DependencyResolver组件
- ASP.NET MVC下拉框联动实例解析
- ASP 使用Filter函数来检索数组的实现代码
- ASP.NET MVC的四种验证编程方式
- ASP.NET MVC @Helper辅助方法和@functons自定义函数的使用方法
- 利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)