【问题标题】:Scaling out WCF, how to deal with callbacks?横向扩展WCF,如何处理回调?
【发布时间】:2012-01-27 12:44:33
【问题描述】:

假设,我想扩展(添加更多框)一些 WCF 服务。这看起来很简单,设置负载平衡器,使用例如循环算法在多个盒子上调用 WCF 服务。

但是当 WCF 服务有回调契约时如何处理。当客户端连接到某个特定框时,它会接收仅由该计算机 WCF 服务实例引发的事件。我希望客户端接收组(集群)中任何 WCF 服务实例引发的事件。

让 WCF 服务了解其他 WCF 服务实例引发的事件的最佳方法是什么?

一些想法:多播、广播、WCF NetPeerTcpBinding、订阅集群中所有 WCF 服务的单个服务器(充当事件聚合)。

更新:我已经设法创建了测试系统,使用 NetPeerTCPBinding 作为跨服务器共享事件的机制。我还没有做基准,但是我觉得WCF P2P对于这个象牙来说太重了,我要实现基于UDP广播的事件共享系统。

【问题讨论】:

标签: c# .net wcf


【解决方案1】:

我将通过设置每个服务器可以订阅的 MSMQ 队列来实现这一点,当发生其他服务器需要知道的事件时,服务可以发布它。

我使用一个名为NServiceBus 的库来简化整个过程。 NServiceBus 是一个功能齐全的库,它使用 MSMQ(以及其他传输)来创建发布/订阅消息传递总线,这将完全解决您的问题。它易于使用,并且具有用于配置、订阅和发布的流畅界面。

稍后我会回来编辑这篇文章并提供一个示例,但 NServiceBus 网站有大量文档可让您在此之前开始使用。

【讨论】:

  • 我喜欢这个想法,会尝试,我玩过一点 NServiceBus,但从未在生产中使用过。
【解决方案2】:

您考虑过消息传递吗?听起来很理想。

【讨论】:

  • 我有一段时间没有做任何消息传递的东西了,你需要做一些谷歌搜索,但请查看发布和订阅设计模式,例如 codeproject.com/Articles/34316/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2022-12-11
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多