教你使用WCF框架 wcf基础教程
创始人
2024-06-10 18:40:48
0

框架其实就是一种规范的流程,它可以让我们的流程很清晰,代码更规范。下面我们就来介绍一下WCF框架中发布-订阅的实现流程。我并不只是提供了发布-订阅服务以及客户端的实例,而且还提供了一个通用的框架,能够自动实现发布-订阅服务,以及增加对所有应用程序的支持。若要构建这样的框架,首先需要分解管理发布-订阅的接口,然后为临时订阅和持久订阅以及发布提供单独的契约。

#T#WCF框架阅者类型

我们甚至可以定义两种类型的订阅者:临时订阅者是在内存中运行的订阅者;持久订阅者则是持久化到磁盘的订阅者,它们代表了服务对发生事件的调用时间。对于临时订阅者,可以使用双向回调机制,通过它将回调引用传递到正在运行的服务。持久订阅者则需要将订阅者地址当作引用进行记录。当事件发生时,发布服务会调用持久订阅者的地址,然后将事件传递给它。两种订阅类型还有另外一个显著区别,就是我们可以将持久订阅者存储在磁盘或数据库中。这样就能够在关闭应用程序或机器崩溃或重启的时候,持久化订阅者。这一过程允许以管理方式对订阅进行配置。显然,在关闭应用程序时,我们不能存储临时订阅,而需要在每次应用程序启动时,明确地创建临时订阅。

WCF框架管理临时订阅

可以使用我定义的ISubscriptionService接口管理临时订阅,定义如例所示。例 管理临时订阅者的ISubscriptionService接口

  1. [ServiceContract]   
  2. public interface ISubscriptionService   
  3. {   
  4. [OperationContract]   
  5. void Subscribe(string eventOperation);   
  6.  
  7. [OperationContract]   
  8. void Unsubscribe(string eventOperation);   
  9. }   

注意,ISubscriptionService接口无法识别实现了它所期待的终结点的回调契约。作为一个通用的接口,它与特定的回调契约无关。定义这些回调契约取决于如何使用应用程序。通过继承ISubscriptionService接口,可以在应用程序中提供回调接口,并指定所需的回调契约:

  1. interface IMyEvents   
  2. {   
  3. [OperationContract(IsOneWay = true)]   
  4. void OnEvent1( );   
  5.  
  6. [OperationContract(IsOneWay = true)]   
  7. void OnEvent2(int number);   
  8. [OperationContract(IsOneWay = true)]   
  9. void OnEvent3(int number,string text);   
  10. }   
  11.  
  12. [ServiceContract(CallbackContract = typeof(IMyEvents))]   
  13. interface IMySubscriptionService : ISubscriptionService   
  14. {}   

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...