如何处理ASP.NET MVC 3应用程序中的横切关注点?

时间:2012-10-12 02:53:03

标签: c# .net asp.net-mvc aop cross-cutting-concerns

我有一个ASP.NET MVC 3 Web应用程序,其中包含各种组件/层:

  1. 网络
  2. 服务(缓存,外部API,云服务等)
  3. 核心(域逻辑,POCO等)
  4. 存储库(实体框架)
  5. 现在,当我在我的网站上做某事时(例如提交表格,又称POST) - 在最坏的情况下,可能需要通知所有图层。

    现在,我可以将所有这些逻辑构建到我的控制器HTTP POST操作中,但它在逻辑上变得非常胖和重量。

    我已经涉足使用Publisher-Subscriber模式(AOP),但我还没有找到一个非常好的.NET实现,我也有人告诉我这不是一个很好的Web实践应用

    任何人都可以在这里给我任何建议,或者我坚持使用这样的代码:

    [HttpPost]
    public ActionResult Do(Something model)
    {
        _repository.Save(model); // this should be the only line IMO
        _service.DoSomething();
        _repository.DoSomethingElse();
        _domain.DoSomethingMore();
    }
    

    我不是在谈论多线程或其他任何东西,而是简单地从控制器上取下关闭,并将其放在关心这些操作的组件上。

2 个答案:

答案 0 :(得分:1)

一个好的 PubSub 脚本是Faye,它建立在Node.js上。这非常好,可以用于你的情况。

  

Faye 是基于 Bayeux 协议的发布 - 订阅消息系统。它为 Node.js Ruby 提供消息服务器,并在服务器和所有主要Web浏览器中使用客户端。

答案 1 :(得分:0)

如果你还没有完全放弃PubSub,你可以看看RabbitMQ。 http://www.rabbitmq.com/

我不明白为什么它不是网络应用程序的“最佳实践”,无论如何这些类型的绝对都很少是正确的。