【问题标题】:Where to put logic if not in an ActionFilter?如果不在 ActionFilter 中,该把逻辑放在哪里?
【发布时间】:2012-11-26 12:11:03
【问题描述】:

所以我一直在 StackOverlow 上阅读一些 cmets,说您不应该将业务逻辑放在自定义 ActionFilterAttribute 中,因为它被视为元数据。

例如访问存储库并进行一些检查,并在您的自定义属性中进行相应处理(错误)。

首先我不确定我是否同意这一点,因为很多框架过滤器(身份验证)等都在做业务逻辑 - 主要区别主要是在控制器的范围内,即只访问控制器值、路由数据等等

所以我的问题是,当您确实需要使用 ActionFilter 来标记单个操作以进行额外的逻辑/处理时,您将逻辑放在哪里?

感谢您的意见/

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

使用动作过滤器来做一些业务逻辑并没有错。通常,这就是您实现诸如日志记录、安全性等横切关注点的方式(正如您所指出的)。

他们的目的都是以他们的名义。您的操作的过滤器。传入的操作或对数据的传出修改要输出

您需要注意的是,将修改业务数据并将更改持久化的行为置于操作过滤器中。这些事情对于下一个查看您的代码的开发人员来说是违反直觉的。它们不过滤任何东西,它们改变整个系统的状态,这就是 Actions(Commands) 的用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2013-12-09
    • 2013-09-04
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多