码迷,mamicode.com
首页 > Web开发 > 详细

MVC过滤器 实现AOP(入门)

时间:2015-03-31 18:15:24      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:aop   mvc   filter   

    在大型开发项目中,总会提到面向切面编程的概念,即AOP。OOP的思想,对任何事物来说,都具有方法和属性,不存在无主的方法。

 

什么是AOP呢?开发切面有什么好处呢?

    AOP面向的是一个切面。使用切面,把公共的功能抽出来。单独开发。然后将公共部分的实现,在开发人员不知情的情况下,添加进去。

    开发人员,一般都只是开发自己的功能。专注自己的业务逻辑。

    如果,在某一部分的功能开发中,都必须处于登录状态,那么里面每个功能中都写  判断用户状态的代码。

这样开发,代码重复性高,不易维护,开发慢……

 

    为了提高编程效率,不得不将一些公共的方法抽离出来。

    但是,问题又来了。方法抽出来了。在每个功能中,都需要调用该方法。

一不小心少些一个,又是麻烦事……

 

怎样,才能避免这种情况呢?引入AOP 

在MVC前台框架中,MVC中Controller中的Filter可以将公共的代码抽离出来。

 

定义过滤器:

public class TestFilterAttribute:ActionFilterAttribute
    {
        public string Message { get; set; }

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            filterContext.HttpContext.Response.Write("Action执行之前"+Message+"<br />");
        }

        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            base.OnActionExecuted(filterContext);
            filterContext.HttpContext.Response.Write("Action执行之后"+Message+"<br />");
        }

        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            base.OnResultExecuting(filterContext);
            filterContext.HttpContext.Response.Write("返回Result之前"+Message+"<br />");
        }

        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            base.OnResultExecuted(filterContext);
            filterContext.HttpContext.Response.Write("返回Result之后"+Message+"<br />");
        }
    }


编写Controller方法,使用过滤器:

[TestFilter(Message="Action")]
public ActionResult Index()
{
     HttpContext.Response.Write("Action正在执行···<br />");
     return Content("正在返回Result···<br />");
}


执行顺序效果:

技术分享

    利用MVC中的Filter可以实现日志。将写日志的方法放到Filter中,这样Controller中的方法,在执行的过程中就会写日志。

    而开发人员不需要开发 写日志的功能。

    对于面向切面的编程,当然不会局限在某一层中。而使用MVC中的Filter仅仅解决在前台的问题。至于将切面控制到其他层中,请继续深入Spring.net AOP

 

MVC过滤器 实现AOP(入门)

标签:aop   mvc   filter   

原文地址:http://blog.csdn.net/zc474235918/article/details/44781065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!