定義訂閱結構描述
Notification Services 是利用聯結事件和訂閱資料的 Transact-SQL 查詢,來產生通知。在使用大部份的應用程式時,您必須指定在產生通知時所用的訂閱欄位。您是在訂閱類別的結構描述中,指定這些欄位。
本主題將描述 Notification Services 所加入的預設欄位 (您可以加入結構描述中的標準欄位),以及如何建立自訂欄位。
預設的訂閱欄位
所有的訂閱都需要一般資訊。Notification Services 必須可以唯一識別每個訂閱,識別每個訂閱的訂閱者,以及判斷是否有啟用訂閱。如果訂閱類別支援排定的訂閱,則訂閱必須與訂閱排程相關聯。
若要簡化應用程式開發,Notification Services 會針對這項共用資訊自動加入下列訂閱類別欄位:
附註: |
---|
請勿在訂閱類別結構描述中,定義下列欄位。如果這麼做,就會因為欄位定義重複,而無法建立應用程式。 |
- Notification Services 包含 [SubscriptionId]、[SubscriberId] 和 [Enabled] 欄位。當 Notification Services 建立應用程式時,它會將下列資料行加入訂閱資料表定義中:
- [SubscriptionId] 是一個 bigint 識別資料行。Notification Services 會針對每個新訂閱的這個資料行提供一個值。
- [SubscriberId] 是 nvarchar(255) 資料行。當您加入訂閱時,您的訂閱管理介面必須提供訂閱者識別碼值。
- [已啟用] 是一個 [布林] 欄位,您可以用程式設計的方式,為每一項訂閱加以設定。如果將 [已啟用] 值設為 false,就會暫停產生訂閱的通知。預設值是 true。
- 如果訂閱類別有排定的規則,Notification Services 便含有一個 [ScheduleId] 欄位。在訂閱資料表中,它是訂閱排程資料表的外部索引鍵。排程值是在使用者建立一個排定的訂閱時,在訂閱管理介面中定義的。[ScheduleId] 是一個接受 NULL 值的 int 資料行,以防萬一訂閱類別同時支援事件驅動訂閱和排定訂閱兩者。
標準欄位: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 規則中,提供一個靜態地區設定。
- 如果您的應用程式支援多個地區設定,請從另一個來源選取訂閱者地區設定,例如,另一個資料庫中的使用者設定檔資料表。
自訂訂閱欄位
大部份的應用程式也都有自訂訂閱欄位。這些欄位會定義訂閱者可以在他們的訂閱中自訂,並且在訂閱資料表中建立資料行的值。
若要建立自訂欄位,必須知道訂閱者可以提供哪些資訊來自訂他們的訂閱。例如,氣象應用程式可讓使用者只選取一個城市,因此您只要定義一個 [城市] 自訂欄位即可。飛行應用程式可讓使用者選取一個飛行起點、終點、價格和運輸公司,因此您要建立 [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 Management Objects (NMO) 來定義訂閱類別的結構描述。
範例
如需結構描述的範例,請參閱<訂閱結構描述範例>。
請參閱
概念
定義核心訂閱類別
定義訂閱規則
定義訂閱類別的索引
定義訂閱類別的紀事輯
收集訂閱相關的資訊
其他資源
定義訂閱類別
資料類型 (Database Engine)
CREATE TABLE (Transact-SQL)
FieldType Element for SubscriptionClass/Schema/Field (ADF)
開發訂閱管理介面