使用.NET的发布/订阅模型可以使用哪些技术?

时间:2009-12-09 20:21:08

标签: .net events publish-subscribe

我目前正在开发一个应用程序,其中应用程序的一个组件需要根据特定事件与多个其他系统组件进行交互。这些事件基于许多不同的触发器发生...某些事件是由用户的操作引起的,其中需要通知其他用户,某些事件是基于时间的,而其他事件是基于对象状态的更改。 / p>

根据我到目前为止所看到的,听起来解密应用程序组件的最简洁方法是设置一个发布/订阅模型,其中组件中的对象发布其他感兴趣的应用程序组件可以订阅的事件

我见过nServiceBus,由于“供应商锁定”的原因,我不能在Azure中使用.NET服务。还有其他技术吗?我应该考虑采用不同的方法吗?

编辑 - 很明显,这是一个基于网络的大批量应用程序。该应用程序是ASP.NET MVC,MVC应用程序正在与多个WCF服务进行通信以获取其数据。

8 个答案:

答案 0 :(得分:6)

WCF肯定能够处理发布/订阅方案 - 并且一旦带有新的WCF Azure中继绑定的.NET 4出现就会更多。

目前,请查看以下主题的文章:

对于使用.NET Service Bus的未来基于Azure的发布/订阅消息传递,请参阅以下文章:

答案 1 :(得分:3)

还有MassTransit。从未使用它,但它通常在与nServiceBus相同的对话中提及。

根据您正在尝试做的事情,还有Managed Extensibility Framework。不是真正的发布/订阅框架,但如果你还没有,那就要注意了。

答案 2 :(得分:2)

Udi(nServiceBus的创建者)在他的blog

上有一个关于域事件概念的简化版本

我们使用它作为基础来开发一个更简单的实现,比如我们可以在我们的解决方案中使用的nServiceBus。

答案 3 :(得分:1)

要使用.net实现经典的发布/订阅模型,我会使用ActiveMQ。这很容易理解,如果你已经知道JMS,那么学习曲线就会非常平坦。

答案 4 :(得分:0)

WCF

Google WCF发布Subcribe模型。我认为Juval Lowy编程WCF的附件部分对如何做到这一点有很好的解释。

EDIT http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&tabid=11
寻找发布 - 订阅框架

答案 5 :(得分:0)

Prism附带一个EventAggregator,提供松散耦合的事件。

答案 6 :(得分:0)

假设您拥有多进程或SOA架构,那么到目前为止答案是很好的答案。

如果它是一个简单的独立应用程序,也许内置的C#事件模型在您的情况下运行良好。或者,也可以使用委托或接口传递给服务器/发布者。

observer pattern link可能会有所帮助。

答案 7 :(得分:0)

这是一个关于“nServiceBus, Rhino Service Bus, MassTransit - Videos, Demos, Learning Resources”的问题,有一些好的答案。