赞
踩
简单的WCF发布-订阅(Pub/Sub)服务
发布-订阅服务架构是分布式系统中常见的服务架构。本文将通过一个简单的例子介绍WCF中发布-订阅服务的实现,以及一些相关概念的介绍。
WCF支持回调操作,所谓回调就是服务端调用客户端的操作。如下图所示,在回调时:服务成为客户端,客户端成为服务。
本文要实现的例子是这样的:客户端(订阅者)向服务(发布者)提出订阅请求,服务响应客户端请求,并通过回调客户端上的操作来通知客户端。
一、契约
所谓契约就是大家都有遵守的东西。发布-订阅模式的契约和其他回调服务一样分为两个部分:服务契约和回调契约。
1.1 服务契约
服务契约提供了订阅Subscribe( )和退订UnSubscibe( )两个服务操作。两个操作的参数都是GUID,主要是区分各个订阅者。
将ServiceContract的CallbackContract属性定义为ICallbackEvents,即是指明回调契约。
1.2 回调契约
回调契约定义了一个Notify( )操作,是用于服务通知客户端的。
回调契约之所以不用加[ServiceContract],是因为在服务契约中已经指明了。
二、服务
服务实现了订阅Subscribe( )和退订UnSubscibe( )两个操作。并且定义了两个链表分别保存订阅者的ID和 他的回调操作的上下文。两个链表的项是依次对应的。其中,ID链表是和下面的主机进程的ListBox是“绑定”。
需要强调的是,我们在这把ServiceBehavior设为可重入的来实现回调功能。将其实例模式设置为单例模式,以让多个订阅者公用一个发布者。
三、主机
主机进程是一个WindowsForm的应用程序,提供服务的承载和图像界面。
四、客户端
五、配置
最后要说明的是,要实现回调服务必须使用具有双向通信功能的绑定方式,如netTcpBinding。
另外为了在为了在网络上运行,需要将<security mode="None">
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。