C# 如何在ASP.NET MVC 3应用程序中处理横切关注点?
我有一个ASP.NET MVC 3 web应用程序,具有各种组件/层,例如:C# 如何在ASP.NET MVC 3应用程序中处理横切关注点?,c#,.net,asp.net-mvc,aop,cross-cutting-concerns,C#,.net,Asp.net Mvc,Aop,Cross Cutting Concerns,我有一个ASP.NET MVC 3 web应用程序,具有各种组件/层,例如: 网 服务(缓存、外部API、云服务等) 核心(域逻辑、POCO等) 存储库(实体框架) 现在,当我在我的网站上做一些事情时(例如提交一个表单,又称帖子)——在最坏的情况下,可能需要通知所有层 现在,我可以将所有这些逻辑构建到我的控制器HTTP POST操作中,但它在逻辑上变得非常繁重 我曾尝试过使用发布者订户模式(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();
}
这里我不是说多线程或其他什么,只是简单地把控制器上的责任卸下来,放在关心这些操作的组件上。如果您还没有完全放弃PubSub,您可以看看RabbitMQ。
我不明白为什么它不是web应用程序的“最佳实践”,这些绝对值很少是正确的。一个好的PubSub脚本是基于Node.js构建的。它真的很好,可以用于您的案例 Faye是一个基于Bayeux协议的发布-订阅消息系统。它为Node.js和Ruby提供消息服务器,并为服务器和所有主要web浏览器提供客户端
我想尽量远离“外部”服务。因为工作是在后台执行的,超出了主请求线程的范围。