需要将消息推送到客户端的WCF服务

时间:2012-04-20 15:35:11

标签: wcf publish-subscribe

这是我需要的设计:My design idea

enter image description here

“订阅者”设计对于服务的“橙色”部分是个好主意吗?

客户端需要连接到服务以执行“读取”和“写入”操作,并且还需要从服务中获取通知(以推送方式)。

一开始我认为提供'read'和'write'functionialliyy的服务也能够(通过后台线程)发送通知,但后来我才明白'CallBack'仅在服务时使用需要调用客户端上的函数作为客户端请求的响应。含义 - 服务无法启动对客户的调用。那么“Subsciber”设计是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

如此简短的回答是肯定的 - 使用发布/订阅模式是众所周知的模型。它有助于消费者与出版商脱钩。 Devil在实施细节中,您可以处理多少复杂性以及您愿意在设计中交易什么。

如果您愿意接受它的权衡(必须是WCF客户端,您拥有客户端和服务)和限制(客户端直接耦合,网络拓扑限制),您可以从WCF duplex channel实现开始。

如果双工频道的限制不符合您的喜好,那么您可以考虑使用类似MSMQ或NServiceBus的内容来促进发布/订阅要求。您可以使用Windows Azure AppFabric Service Bus将其提升到新的水平。

Duplex可以独立地向客户端发送消息,而不仅仅是来自客户端的呼叫到达时。

双工不耐用 - 当客户端离开或存在任何通信问题时,您必须从通道故障中恢复。保护双工可能很棘手。您必须双方都有WCF客户端/服务。您必须了解您的网络拓扑。

您有2个不同的绑定上下文(系统)。一个是客户端发送命令和查询,另一个是发布有趣的事件给谁想要听这些事件。

编辑 - 如果某些客户端是iOS设备怎么办?使用DUPLEX会造成问题吗?您是否可以开发通过DUPLEX渠道与WCF服务通信的iOS应用程序?

答案:请参阅此SO WCF duplex connection on iPhone?What should I know when developing interoperable WCF web service?