我正在研究基于WCF的发布订阅框架的各种选项。假设我有一个WCF Web服务,它将是发布者,1000个客户端注册为订阅者。对于某些已发布的消息,所有客户端都会感兴趣,但同时我希望能够通过特定消息通知单个客户端。收到通知后,客户端将调用Web服务上的其他Web服务方法。
NServiceBus适合这种情况吗? 如果我使用MSMQ进行传输,是否意味着安装客户端的每台PC都需要创建一个队列?
答案 0 :(得分:4)
一些挑战包括您希望发布商在给定订阅客户端关闭时的行为 - 您是否希望在订阅者重新启动时该消息可用?如果是这样,那么它们之间需要某种持久的消息传递 - 比如MSMQ。
关于通知单个客户的问题是,该客户发送请求的结果是什么?如果是这样,那么标准的NServiceBus以Bus.Reply的形式调用将为您完成。使用WCF时,如果响应是异步的,则需要使用回调契约。
NServiceBus可以完成您描述的所有事情,并且能够自动安装MSMQ并创建队列,从而大大简化客户端部署。
您还可以使用NServiceBus通过WCF公开消息,以便在需要时也可以支持非NServiceBus客户端。它还有自己的http网关和XSD架构,即使不使用WCF,也可以允许非Windows平台上的客户端进行互操作。
希望能回答你的问题。