asp.net-mvc – AOP vs MVC FilterAttributes vs Interceptor
|
> ASP.NET MVC建议使用或扩展内置的Authorization,Action,Result,Exception过滤器.
现在,我搞砸了.可能是我混合了所有这些. 解决方法一切都始于良好的应用程序设计.当您的应用程序设计正确时,您将很少有理由与您的UI框架公开的那些AOP交互(这也适用于WCF).例如,当您隐藏通用接口背后的所有业务逻辑并向其传递命令消息时(如this article所示),您的控制器将成为瘦包装器,通常只需执行此类业务命令.在这种情况下,您将能够通过包装这些业务操作来实现授权和异常过滤,从而使UI代码保持干净并且不受属性影响.通过拦截或plain old decorators可以完成围绕业务运营的那些横切关注点.这可以为您提供更大的灵活性并保持您的设计SOLID(其具有很多不太明显的长期效益). 尽管PostSharp的代码编织工具有其用途,但您应该小心它们.他们使用后编译过程将代码注入到程序集中.这使得在没有达到这些方面的情况下对这些类进行单元测试非常痛苦.您不能轻易地单独测试这些类(这是单元测试的前提条件).使您的方面依赖于某些静态变量,使方面和单元测试复杂化.静态变量使得难以并行运行单元测试,并且使用全局常量将需要测试以正确地拆除更改的全局设置以防止其他测试受到影响. 虽然代码编织工具导致的性能通常大于拦截,但与使用装饰器相比,没有性能提升. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 编码撇号
- asp.net网站默认文件在子文件夹中
- asp.net-mvc – asp.net mvc 3 – ajax表单提交和验证
- asp.net – Sys.WebForms.PageRequestManagerServerErrorEx
- asp.net – Orchard CMS如何进行日志记录?
- asp.net-mvc-3 – 将值传递给控制器时,ASP.NET MVC datetim
- asp.net-mvc-4 – 使用基本HTTP身份验证的MVC4 app WebApi中
- asp.net-mvc – 如何在ASP.NET MVC中生成弹出页面链接
- asp.net – 如何知道一个javascript文件是否已被包含在顶级
- asp.net-mvc – 在ASP.NET MVC中为URL段添加ID和标题
