假设,我想扩展(添加更多框)一些WCF服务。这看起来很简单,设置负载均衡器,使用例如循环算法在多个盒子上调用WCF服务。
但是如何处理WCF服务有回调契约的情况。当客户端连接到某个特定的框时,它会接收仅由此计算机WCF服务实例引发的事件。我希望客户端接收由组(集群)中的任何WCF服务实例引发的事件。
让WCF服务了解其他WCF服务实例引发的事件的最佳方法是什么?
一些想法:多播,广播,WCF NetPeerTcpBinding,订阅集群中所有WCF服务的单个服务器(充当事件聚合)。
更新:我已设法创建测试系统,使用NetPeerTCPBinding作为跨服务器共享事件的机制。我还没有做过基准测试,但我觉得WCF P2P对于这个象牙来说很重要,我将实现基于UDP广播的事件共享系统。
答案 0 :(得分:2)
我会通过设置每个服务器可以订阅的MSMQ队列来实现这一点,当其他服务器需要知道的事件发生时,服务可以发布它。
我使用名为NServiceBus的库来简化整个过程。 NServiceBus是一个功能齐全的库,它使用MSMQ(以及其他传输)来创建发布/订阅消息总线,这将完全解决您的问题。它易于使用,并具有流畅的界面,可用于配置,订阅和发布。
我稍后会回来编辑这篇文章,但是NServiceBus网站上有大量的文档可以让你在那之前开始。
答案 1 :(得分:0)
你考虑过消息吗?听起来很理想。