65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Server 通知服务入门

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.58/5 (9投票s)

2002年9月3日

6分钟阅读

viewsIcon

179258

本文将为您提供足够的信息,激发您对 Microsoft 最新的、为 SQL Server 2000 设计的、并能利用 .NET 计划的服务产生兴趣。

引言

您可能会问:“SQL Server Notification Services 是什么?” 这是一个好问题,我希望很快会有更多人提出。本文旨在回答这个问题,并为您提供足够的信息,激发您对 Microsoft 最新的、为 SQL Server 2000 设计的、并能利用 .NET 计划的服务产生兴趣。

要理解 SQL NS,您首先需要了解它的用途,或者说它解决的问题。您是否曾设计或参与过需要让某人或某事知道特定条件何时存在的系统?例如(此处使用老套的比喻),一个跟踪股票的应用程序,而用户希望在 XYZ 公司股票达到 150 时收到通知,以便他可以套现购买那艘新游艇!

在现实中更常见的是,一个按计划运行的系统,而用户需要知道问题或成功执行的通知。作为一名职业开发人员,我曾多次遇到类似情况。通常需要一些晦涩的自定义开发,或者购买一些昂贵的第三方监控软件。如果有一个能直接集成到我的软件核心、成本不高、并且足够可扩展以供开发人员尽情发挥的东西,那将多么好。现在,SQL Server Notification Services 应运而生,它是解决上述问题的最新方案。使用 SQL NS,您可以快速为任何应用程序提供通知功能。

它的作用

基本上,SQL NS 接收由所需服务开发人员提供的指令,并使用这些指令构建数据库来管理通知。它还会创建一个 Windows 服务实例,其名称与通知应用程序相关。这些通知应用程序的组成部分都由 SQL NS 创建;您不必了解它们的创建细节。开发人员只需要知道如何正确格式化 **应用程序定义文件**(简称 ADF)。ADF 基本上是 SQL NS 用于创建通知服务的指令。我不会在此深入细节,但创建 ADF 和创建新服务非常容易。

通知服务包含什么?

每个通知服务包含三个主要部分。让我们简要定义并解释每一个。

事件

要发送通知,必须有某种触发机制。在 SQL NS 中,这种触发机制定义为“事件”。事件可以由特定操作触发,也可以是时间间隔,这取决于设计者。通知服务的所有事件都可以在服务的 ADF 中定义。

一个事件的例子可能是,Bob 想知道他的花是否送到了他女朋友家,所以他订阅了花店提供的通知服务。花店在其服务中定义了一个事件,当送货员致电确认送达时生成通知。一旦生成事件,通知就会被创建并通过 SMS 短信发送给 Bob。

一个定时事件的例子可能是,XYZ 公司的销售人员需要在每天开始工作前收到最新的联系人列表。在通知服务中创建一个事件,该事件会生成一个包含他更新联系人列表的通知,并以智能短信的形式发送到他的手机。只需按一下按钮,他就可以接收消息并更新联系人列表。

事件可以通过多种方式创建,最常见的是从 SQL 数据库或系统日志中提取。在 ADF 中定义事件时,也会定义检索事件数据的方法。

Notifications

通知是实际发送给订阅者的**数据**,它基本上是与此通知关联的事件被触发时检索到的数据的格式化形式。服务支持的通知的内容和格式在 ADF 中定义。

Microsoft 提供了一个 XSLT 内容格式化器,以简化通知方面的任务。它允许我们对原始通知数据应用 XSLT 转换。这使我们能够轻松地准备通知以便显示给订阅者。

订阅

订阅者是通知服务的实际最终用户,也就是那个想要收到他股票上涨通知以便购买游艇的人。当 SQL NS 创建通知服务时,它会在 SQL Server 中创建一个仅用于存储订阅者信息的数据库。要添加订阅者,开发人员需要创建某种订阅应用程序,这听起来有点让人摸不着头脑,但事实并非如此。订阅应用程序完全留给服务设计者的想象力,但 Microsoft 提供了一些工具,可以大大简化构建过程。我们不必知道订阅数据库的完整 ER 模型,因为我们可以简单地利用 Microsoft 为我们提供的托管组件来添加订阅者。

因此,只需创建一个用于从订阅者收集所需信息的应用程序,并使用 `Microsoft.SqlServer.NotificationServices` 命名空间中提供的类。(请注意,这些是 .NET 类)

订阅者可以选择他们想要订阅的事件、他们想要的通知格式,甚至他们希望通知发送的媒介,是的,他们甚至可以选择不止一种。

当然,所有这些功能都不是自动完成的,但一旦您对构建 ADF 掌握了窍门,就可以轻松地将它们添加到服务中。通知服务的复杂程度可以从非常简单到极其复杂。您可以在一天或一个月内构建一个。这完全取决于您自己的情况需要什么。

更多信息…

SQL NS 支持两种通知传递媒介:文件系统和 SMTP。您可以根据需要添加更多,例如,如果您需要直接 SMS 支持。

正如我之前所说,SQL NS 非常庞大,这只是一个介绍,希望能让更多人了解它,并对我在其未来中看到的许多用途产生兴趣。它目前仍处于测试阶段,但计划在 2003 年之前发布。

还有一个 API 可供直接连接到服务并对其执行操作。这在 SQL NS 附带的“Books Online”的补充部分有详细说明。

SQL NS 完全支持您处理来自不同国籍的订阅者,如果您构建的服务得当,您甚至可以向同一订阅者发送多种语言的通知。

SQL NS 完全利用了 .NET,事实上它本身就是用 C# 编写的。

SQL NS 是一个相当庞大的系统,如果您愿意,可以花很多时间来了解它的内部机制,或者您可以花少量时间来学习构建服务,这取决于您。但无论您做什么,都可以通过查看此处开始 (http://www.microsoft.com/sql/NS/overview.asp)

我希望您在阅读本文时有所收获,而非头疼,祝您构建愉快。

© . All rights reserved.