面向切面编程AOP
Aspect Oriented Programming在不修改之前的代码为基础,可以动态的增加业
务逻辑:
如果可以在已经成型的程序中,如果可以动态在某些行为之前增加点内容;在
某些行为之后增加点内容-----之前已经开发好的内容保持不变;
ASP.NET Core中的AOP--Filter
AuthorizeAttribute 权限验证
IResourceFilter 资源缓存
a.IResourceFilter中的OnResourceExecuting
b.控制器的构造函数 - 实例化控制器
c.执行Action方法
d.IResourceFilter中的.OnResourceExecuted
IActionFilter 方法前后的记录
a.控制器的构造函数 - 实例化控制器
b.执行CustomActionFilterAttribute.OnActionExecuting
c.执行Action方法
d.CustomActionFilterAttribute.OnActionExecuted
IResultFilter 结果生成前后扩展
a.CustomResultFilterAttribute.OnResultExecuting
b.开始渲染生成视图内容
c.CustomResultFilterAttribute.OnResultExecuted
IAlwaysRun 响应结果的补充
ResourceFilter处理后,HttpContext.Result赋值,在后面来一个补充
IExceptionFilter 异常处理
如果同时使用他们的先后顺序为
a.验证权限,进入到Authorization
b.ResourceFilter 中的 - OnResourceExecuting
c.开始创建控制器实例
d.ActionFilter 中的 - OnActionExecuting
e.执行Action方法
f.ActionFilter 中的 - OnActionExecuted
g.ResultFilter 中的 - OnResultExecuting
h.AlwaysRunResultFilter 中的 - OnResultExecuting
i.渲染视图
j.AlwaysRunResultFilter 中的 - OnResultExecuted
k.ResultFilter 中的 - OnResultExecuted
l.ResourceFilter中的 - OnResourceExecuted