wcf三种模式 wcf制作流程图
创始人
2024-06-10 18:31:50
0

一门好的语言它就要有一定的设计模式,在WCF这门技术中它也提供了许多种设计模式,有了设计模式在我们的应用中就会很方便,我们这里就WCF设计模式中的发布-订阅模式分析一下吧。针对事件使用原来的双向回调通常会引入发布者与订阅者的高度耦合。订阅者必须知道所有发布的服务在应用程序的位置,并连接它们。订阅者不能识别的发布者无法通知事件的订阅者。如果增加新的订阅者(或者移除已经存在的订阅者)就会给已经部署了的应用程序带来困难。

#T#无论什么时候,对于应用程序的任何人发出的事件的一个特定类型,订阅者都无法要求获得通知。此外,订阅者必须为每个发布者发出多个昂贵的调用,不管是订阅还是取消订阅。不同的发布者可能会触发相同的事件,但却为订阅者和取消订阅提供了略微不同的方法,自然而然给订阅者与相关方法带来耦合。大致相同的是,发布者只能通知它知道的订阅者。无论是谁,如果希望接收事件,发布者都无法将消息传递给它,也没有能力广播事件。此外,所有的发布者都必须包含必要的代码,管理订阅者列表以及自身的发布行为。这些代码几乎与服务要解决的业务问题无关,如果还要提供一些高级特性,例如并发发布,就会增加相当大的复杂度。

而且,基于双向的回调同样会引入发布者与订阅者生命周期的耦合度。为了订阅和接收事件,必须运行订阅者。订阅者无法询问事件是否被触发,而应用程序则需要创建一个订阅者的实例,让它处理该事件。安全性则代表了另外一种耦合:订阅者需要通过各种安全模式以及使用的证书,以具备验证所有发布者的能力。同时,发布者也需要具有足够的安全证书,从而允许触发事件,不同的发布者可能具有不同的角色成员机制。

最后,必须以编程方式设置订阅信息。我们很难通过管理方式在应用程序中配置订阅信息,或者在系统运行时,改变订阅者的选项。这些问题实际上不是WCF双向调用所特有的,过去的技术例如COM连接点或者.NET委托同样具有这样的特性。所有这些都属于紧密耦合的事件管理机制。

WCF设计模式发布-订阅

若要解决以上提及的问题,可以使用已知的发布-订阅设计模式对它们进行设计。该模式所隐藏的含义很简单:通过引入一个专门的订阅服务,以及一个专门的发布服务,解除发布者与订阅者之间的耦合,如图所示。


 
  图一个发布-订阅系统 
 
图一个发布-订阅系统

需要订阅事件的订阅者注册订阅服务,该服务负责管理订阅者列表,同时为取消订阅提供了相似的功能。同样,所有发布者均使用发布服务触发它们的事件,避免将事件直接传递给订阅者。订阅和发布服务提供了一个间接层,从而解除了与系统之间的耦合。订阅者不需要了解发布者的身份。它们能够订阅事件类型,以及接收任何发布者的事件,并且订阅机制对于所有订阅者都是统一的。事实上,发布者不需要管理任何订阅列表,也不用关心订阅者是谁。它们会将事件传递给发布服务,然后再传递给需要事件的订阅者,上述就是一个WCF设计模式的一个简单介绍。

相关内容

热门资讯

如何允许远程连接到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...