This documentation is archived and is not being maintained.

Why Use Notification Services?

Notification Services provides a programming framework that makes developing professional notification applications fast and easy, and provides a platform for running those applications in a robust and scalable environment.

Notification Services allows you to develop and deploy a notification application easily and quickly by defining application properties and optionally creating custom components using the Notification Services programming framework. This framework provides a wide range of services for your application, including the following:

  • Integration into SQL Server Management Studio to make it easy to deploy and administer Notification Services instances and easy to edit XML files and Transact-SQL scripts.
  • Support for both event-triggered and scheduled subscriptions. Scheduled subscriptions work for all time zones supported by Microsoft Windows and they automatically handle transitions to and from daylight savings time.
  • Support for both simple subscription actions or the more flexible condition-based subscription actions. Simple subscription actions allow subscribers to supply parameters to developer-defined queries. Flexible condition actions allow subscribers to create their own match conditions over the event data.
  • Standard event providers that make it easy to submit events to the system, and interfaces for building custom event providers.
  • Standard delivery protocols that make it easy to send notifications, and interfaces for building custom delivery protocols.
  • Automatic management of the flow of events and notifications through applications.
  • Automatic management of obsolete data, such as expired events and old notification data: you specify a schedule, and Notification Services removes the data.
  • Automatic logging of delivery attempts and retrying of delivery failures.
  • Custom formatting of notifications in multiple languages and for multiple devices.
  • Easy performance monitoring with integration into the Performance Control Panel application.
  • Automatic logging of errors and warnings in the application event log.

Notification Services applications perform well, even if your application must support thousands or millions of subscribers, because of a set-oriented processing model.

All applications that send notifications must evaluate subscriptions at the right times, either when an event related to the subscription is available, or according to a schedule.

In either case, small applications can meet this requirement by simply defining each subscription as its own query and running the queries as appropriate. However, for large applications with thousands or millions of subscriptions, running thousands or millions of individual queries does not scale well.

Notification Services avoids this problem by relying on the common structure of most subscriptions. Rather than treating subscriptions as individual queries, Notification Services processes and evaluates them together as a set. This set-oriented data processing approach is well suited for database engines and is the foundation of the Notification Services programming framework.

In this set-oriented model, subscriptions are evaluated by simply executing a database join between the new events that have arrived and the large set of subscriptions. Notification Services can implement the following broad categories of subscriptions:

  • Simple event-triggered subscriptions that are evaluated as soon as events occur.
  • Subscriptions that are evaluated according to their own schedules.
  • Subscriptions that use past and present events.
  • Subscriptions based on application state.
  • Subscriptions that use external databases.

If you are using flexible condition actions, performance is affected by the variety of the user-defined match conditions. If a condition-based subscription has the same signature as a parameter-based subscription, performance when evaluating the subscriptions will be similar. Arbitrary match conditions will decrease performance,however, because each condition is evaluated one at a time.