定义订阅架构
Notification Services 通过使用连接事件和订阅数据的 Transact-SQL 查询来生成通知。对于大多数应用程序而言,必须指定在生成通知时使用的订阅字段。可在订阅类的架构中指定这些字段。
此主题介绍了 Notification Services 添加的默认字段、可以向架构中添加的标准字段以及如何创建自定义字段。
默认订阅字段
所有订阅都需要共同的信息。Notification Services 必须能唯一地标识每个订阅、标识每个订阅的订阅方并能够确定是否已启用订阅。如果订阅类支持计划订阅,则订阅必须与订阅计划相关联。
为了简化应用程序开发,Notification Services 将自动为此共同信息添加下列订阅类字段:
![]() |
---|
不要在订阅类架构中定义下列字段。否则,创建应用程序时会因字段定义重复而失败。 |
- Notification Services 包括 SubscriptionId、SubscriberId 和 Enabled 字段。Notification Services 在创建应用程序时,会向订阅表定义中添加以下列:
- SubscriptionId 是一个数据类型为 bigint 的标识列。对于每个新订阅,Notification Services 都为此列提供一个值。
- SubscriberId 是一个数据类型为 nvarchar(255) 的列。添加订阅时,订阅管理界面必须提供订阅方的 ID 值。
- Enabled 是一个数据类型为 Boolean 的字段,可以通过编程方式为每个订阅设置此字段。将 Enabled 值设置为 false 将挂起订阅的通知生成。其默认值为 true。
- 如果订阅类具有计划规则,则 Notification Services 将包括一个 ScheduleId 字段。在订阅表中,此字段成为指向订阅计划表的外键。当用户创建计划订阅时,此计划值在订阅管理界面上定义。ScheduleId 是一个数据类型为 int 的列,当订阅类同时支持事件驱动订阅和计划订阅时,此列可接受 NULL 值。
标准字段:DeviceName 和 SubscriberLocale
根据应用程序,您可能需要在订阅类架构中定义以下两个字段:DeviceName 和 SubscriberLocale。通常在每个订阅类中定义这些字段,以允许订阅方选择设备和区域设置,但并不要求必须定义这些字段。如果定义了这些字段,则分发服务器可以将此处提供的信息用于通知格式和传递。
DeviceName 字段
订阅方设备是将通知传递到的地方。设备可以是电子邮件、Windows Messenger、移动电话或应用程序支持的其他任何设备。
生成通知时,通知数据必须包括通知传递的设备名。如果允许订阅方在创建订阅时指定设备,则请在订阅类架构中包括 DeviceName 字段。
使用 DeviceName 字段的下列属性:
- 字段名称:DeviceName
- 字段类型:nvarchar(255)
- 字段修饰符:NOT NULL
关于设备的信息(如订阅方地址)位于实例数据库的订阅方数据中。使用 NSSubscriberDeviceView 视图可以查看 Notification Services 实例的订阅方和订阅方设备信息。有关详细信息,请参阅 NSSubscriberDeviceView。
如果架构中不包括 DeviceName 字段,则必须执行下列操作之一:
- 如果应用程序只支持一个设备,则请在用于生成通知的 Transact-SQL 规则中提供一个静态设备名。
- 如果应用程序支持多个设备,则请动态选择一个设备。例如,一个订阅方可能有多个设备,应用程序可以基于一天中的时间选择设备。在工作时间中,可以将所有通知发送给订阅方的商业电子邮件帐户。在非工作时间中,可以将紧急通知发送到订阅方的电话,将所有其他通知发送到订阅方的家庭电子邮件帐户。
SubscriberLocale 字段
区域设置是通知的语言和国家/地区设置。Notification Services 支持许多区域设置。有关区域设置列表的信息,请参阅Subscriber Locale Codes。
生成通知时,通知数据必须包括区域设置。如果允许订阅方指定区域设置,则请在订阅类架构中包括 SubscriberLocale 字段。
使用 SubscriberLocale 字段的下列属性:
- 字段名称:SubscriberLocale
- 字段类型:nvarchar(10)
- 字段修饰符:NOT NULL
如果不包含 SubscriberLocale 字段,则必须执行下列操作之一:
- 如果应用程序只支持单个区域设置,则请在用于生成通知的 Transact-SQL 规则中提供一个静态区域设置。
- 如果应用程序支持多个区域设置,则请从其他源选择订阅方区域设置,如其他数据库中的用户配置文件表。
自定义订阅字段
大多数应用程序都有自定义订阅字段。这些字段定义订阅方可在其订阅中自定义、并用于在订阅表中创建列的值。
创建自定义字段需要了解订阅方可为自定义订阅而提供的信息。例如,一个天气应用程序可能只允许用户选择一个城市,因此只需定义一个“city”自定义字段。一个航空应用程序可能允许用户选择航班的起点、终点、价格和运载工具,因此将创建如 LeavingFrom、GoingTo、Price 和 Carrier 等字段。
定义自定义字段时,还必须定义此字段的 SQL Server 数据类型和任意字段修饰符,如字段是否接受 NULL 值。由于这些字段将定义表列,所以必须遵循定义表列的规则。有关详细信息,请参阅 CREATE TABLE (Transact-SQL)。
![]() |
---|
有关支持类型列表,请参阅FieldType Element for SubscriptionClass/Schema/Field (ADF)。 |
定义架构
简而言之,定义订阅类的架构时,要定义自定义字段并且应根据需要定义标准 DeviceName 和 SubscriberLocale 字段。不必定义默认字段,如 SubscriberId。
定义订阅类的架构
如果使用 XML 定义应用程序,则应在应用程序定义文件 (ADF) 中定义订阅类的架构。如果以编程方式定义应用程序,则应使用 Notification Services 管理对象 (NMO) 定义订阅类的架构。
示例
有关架构示例,请参阅订阅架构示例。
请参阅
概念
定义核心订阅类
定义订阅规则
为订阅类定义索引
为订阅类定义历史记录
收集与订阅相关的信息
其他资源
定义订阅类
数据类型(数据库引擎)
CREATE TABLE (Transact-SQL)
FieldType Element for SubscriptionClass/Schema/Field (ADF)
开发订阅管理界面