WCF开发工具中,有一种比较重要的设计模式,叫做WCF发布订阅模式。对于初学者来说掌握这一模式可能还是一件比较困难的事情。下面就让我们一起看看他的一些基础内容,从而初步了解WCF发布订阅的基本概念。#t#
WCF发布订阅设计模式
我们可以使用已知的发布-订阅设计模式对一些特定的功能进行设计。该模式所隐藏的含义很简单:通过引入一个专门的订阅服务,以及一个专门的发布服务,解除发布者与订阅者之间的耦合,如图B-1所示。
图B-1 一个WCF发布订阅系统
需要订阅事件的订阅者注册订阅服务,该服务负责管理订阅者列表,同时为取消订阅提供了相似的功能。同样,所有发布者均使用发布服务触发它们的事件,避免将事件直接传递给订阅者。订阅和发布服务提供了一个间接层,从而解除了与系统之间的耦合。订阅者不需要了解发布者的身份。它们能够订阅事件类型,以及接收任何发布者的事件,并且订阅机制对于所有订阅者都是统一的。事实上,发布者不需要管理任何订阅列表,也不用关心订阅者是谁。它们会将事件传递给发布服务,然后再传递给需要事件的订阅者。
WCF发布订阅者类型
我们甚至可以定义两种类型的订阅者:临时订阅者是在内存中运行的订阅者;持久订阅者则是持久化到磁盘的订阅者,它们代表了服务对发生事件的调用时间。对于临时订阅者,可以使用双向回调机制,通过它将回调引用传递到正在运行的服务。持久订阅者则需要将订阅者地址当作引用进行记录。当事件发生时,发布服务会调用持久订阅者的地址,然后将事件传递给它。两种订阅类型还有另外一个显着区别,就是我们可以将持久订阅者存储在磁盘或数据库中。这样就能够在关闭应用程序或机器崩溃或重启的时候,持久化订阅者。这一过程允许以管理方式对订阅进行配置。显然,在关闭应用程序时,我们不能存储临时订阅,而需要在每次应用程序启动时,明确地创建临时订阅。