gpt4 book ai didi

asp.net-mvc - AOP vs MVC FilterAttributes vs Interceptors

转载 作者:行者123 更新时间:2023-12-04 07:04:51 29 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。



  • ASP.NET MVC 建议使用或扩展内置的授权、操作、结果、异常过滤器。
  • 第 3 方 .Net IoC 容器(Unity、Ninject、Autofac)提出拦截器
  • 第 3 方 AOP 工具(Postsharp)提出了它们的属性。

  • 现在,我搞砸了。可能是我混合了所有这些。
    我想构建健壮的代码和稳定的方法,我应该使用什么?

    最佳答案

    这一切都始于良好的应用程序设计。当您的应用程序设计正确时,您与您的 UI 框架公开的类似 AOP 的功能进行交互的理由将大大减少(这也适用于 WCF)。

    例如,当您将所有业务逻辑隐藏在通用接口(interface)之后,并向其传递命令消息(如 this article 所示)时,您的 Controller 将成为瘦包装器,通常只执行此类业务命令。在这种情况下,您将能够通过包装这些业务操作来实现授权和异常过滤,从而使 UI 代码保持干净且没有属性。可以使用拦截或 plain old decorators .这为您提供了更大的灵 active 并保持您的设计SOLID (这有很多不太明显的长期利益)。

    尽管 PostSharp 之类的代码编织工具有其用途,但您应该小心使用它们。他们使用后编译过程将代码注入(inject)您的程序集中。这使得在不触及这些方面的情况下对这些类进行单元测试非常痛苦。您不能轻松地单独测试这些类(这是单元测试的先决条件)。使你的方面依赖于一些静态变量,这会使方面和单元测试变得复杂。静态变量使并行运行单元测试变得困难,并且使用全局常量将要求测试正确地拆除更改的全局设置,以防止其他测试受到影响。

    尽管代码编织工具带来的性能通常高于拦截,但与使用装饰器相比并没有性能提升。

    关于asp.net-mvc - AOP vs MVC FilterAttributes vs Interceptors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008834/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com