8

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

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

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

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

4

8 回答 8

7

WCF 绝对有能力处理 pub/sub 场景——一旦带有新 WCF Azure 中继绑定的 .NET 4 发布,它的能力会更强。

现在,请查看有关该主题的这些文章:

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

于 2009-12-09T20:34:34.090 回答
3

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

根据您要执行的操作,还有Managed Extensibility Framework。不是真正的发布/订阅框架,但如果您还没有的话,请注意这一点。

于 2009-12-09T20:31:32.640 回答
2

Udi(nServiceBus 的创建者)在他的博客上有他的域事件概念的简化版本

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

于 2009-12-09T20:35:21.813 回答
1

要使用 .net 实现经典的发布/订阅模型,我会使用ActiveMQ。它很容易理解,如果您已经了解 JMS,那么学习曲线真的很平坦。

于 2010-02-14T11:20:03.417 回答
0

WCF

Google WCF 发布订阅模型。我认为 Juval Lowy 编写的 Programming WCF 的附件部分很好地解释了如何做到这一点。

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

于 2009-12-09T20:25:09.847 回答
0

Prism带有提供松散耦合事件的 EventAggregator。

于 2009-12-09T20:26:41.123 回答
0

假设您有一个多进程或 SOA 架构,到目前为止的答案都是好的。

如果它是一个简单的独立应用程序,那么内置的 C# 事件模型可能适用于您的情况。或者,也可以使用委托或接口传递给服务器/发布者。

观察者模式链接可能会有所帮助。

于 2009-12-09T20:41:52.037 回答
0

这是一个关于“ nServiceBus、Rhino Service Bus、MassTransit - 视频、演示、学习资源”的 SO 问题,并提供了一些很好的答案。

于 2009-12-09T20:46:47.243 回答