你是否曾经在eBay上购买过东西或者通过在线贸易程序监视过库存?电子邮件通知让你能够极其方便地了解价格的变化、体育比赛的分数、拍卖竞标,这样的特性在任何大量使用的系统里通常都是可以要求添加的功能。但是提供通知这项功能意味着要编写大量的内部代码,而且在原有应用程序上加入通知功能几乎需要重写代码。
微软最近发布了一个工具包,你可以用它来给应用程序添加通知的功能,而只会造成相对少的影响。SQL服务器通知服务是一个为用户提供特定事件通知的通用框架,它构建在SQL服务器2000和.NET Framework上。通知服务框架就目前的使用而言是足够完备的,但是它的扩展性和自定义能力也是很强的。让我们来看看通知服务框架的结构,然后再看看你该如何在应用程序里使用它。
通知服务涉及三个主要的概念:事件、订阅和通知,而且它使用几个不同的组件来管理通知用户的进程。整件事都是由一套NT服务控制的,服务器上运行的每个通知服务实例都有一套服务。
事件一般代表所发生的任何真实或者虚拟事情。事件可以在多种情况下被触发:在某种商品的数量下降到特定水平的时候,订购的商品运送到消费者的时候,或者甚至是某个文件或者其他共享的资源被修改的时候。你也可以创建不依赖特定条件的日常定期事件。用于事件的数据——它们采取COM对象的形式,包括.NET类、XML文档或者SQL服务器的存储过程——由事件提供程序生成。通知服务有两种内置的事件提供程序:
订阅是定义用户感兴趣事件类型的规则。订阅管理对象API提供了一个管理订阅的通用接口。叫做生成器的通知服务组件会周期地运行,对事件和定阅者进行匹配。
通知是关于专用事件的通过任何方法送到订阅者的信息。通知服务包括通过电子邮件、HTTP和修改磁盘文件对通知的支持。你也可以提供自己的通知方法,例如即时信息。有一个分配器组件,它能够使用XSLT或者你所提供的任何自定义方法把来自事件的数据格式化成通知。