使用應用程式定義檔案中的參數 (ADF)
如果您在 XML 應用程式定義檔案 (ADF) 中定義 Notification Services 應用程式,您可以利用參數,使 ADF 更安全、更具可攜性,且更容易更新。您也可以從執行個體組態檔 (ICF),將值傳入 ADF 中。
如果您以程式設計的方式定義應用程式,便沒有參數物件。如果您需要用來更新應用程式值的單一位置,您可以使用變數。
Notification Services 參數
Notification Services 可讓您利用參數來取代元素值。使用參數比較好,原因如下:
- 您可以將機密資料保存在應用程式定義之外,只在建立或更新應用程式時,才提供值。
- 您只需要定義參數值一次,便可以在許多元素中使用它。
- 您可以將可能變更的值放在單一位置,使執行個體和應用程式更容易更新。
在 ADF 內,將取代的參數看起來如下:%MyParam%
。這是用百分比字元括住的參數名稱,類似於環境變數。當您定義參數值時,您要指定名稱 (MyParam
) 和參數值,如 MyServer
。如同環境變數,參數名稱也不區分大小寫。
當您建立或更新應用程式時,Notification Services 會用您指定的值 (MyServer
) 來取代參數 (%MyParam%
)。
對於 ADF,您可以在 ADF 的 ParameterDefaults 元素中提供參數值,也可以在 ICF 的 Application 區段中定義參數名稱和值,將值從 ICF 傳給應用程式。
![]() |
---|
如果您在 ADF 或 ICF 中使用參數,但在建立或更新執行個體時,並未提供參數值,建立或更新程序便會失敗。 |
在 ADF 中定義參數預設值
您可以在 ADF 的 ParameterDefaults 元素中,提供 ADF 參數的值。Notification Services 會從這個元素中讀取參數名稱和值,再用指定的值來取代對應的參數。
例如,您可以用一個參數來代表多個元素共用的檔案路徑。您可以將這個參數命名為 BaseDirPath
,並在 ADF 中建立下列元素:
<BaseDirectoryPath>%BaseDirPath%\Stock</BaseDirectoryPath>
...
<AssemblyName>%BaseDirPath%\MyContentFormatter.dll</AssemblyName>
之後,您可以依照下列方式來提供 %BaseDirPath%
值:
<ParameterDefaults>
<Parameter>
<Name>BaseDirPath</Name>
<Value>C:\NS</Value>
</Parameter>
</ParameterDefaults>
當您建立或更新執行個體時,Notification Services 會用 "C:\NS" 字串來取代 ADF 中所出現的每個 %BaseDirPath%
。在邏輯上,這與在 ADF 中使用下列元素相同:
<BaseDirectoryPath>C:\NS\Stock</BaseDirectoryPath>
...
<AssemblyName>C:\NS\SMS.dll</AssemblyName>
從 ICF 傳遞參數
在 ICF 內,您利用 Application 元素來描述執行個體主控的應用程式。Application 元素有一個 Parameters 子元素。您可以利用這個子元素來定義 ADF 的參數值。
例如,在 ADF 中,您必須定義哪些伺服器執行主控的事件提供者、產生器和散發者。您利用 ADF 中的 SystemName 元素來執行這個動作。如果您在單一伺服器中執行所有這些元件,且您要在建立執行個體時定義伺服器名稱,您可以在 ADF 中使用參數:
<HostedProvider>
...
<SystemName>%ApplicationServer%</SystemName>
...
<Generator>
<SystemName>%ApplicationServer%</SystemName>
...
<Distributor>
<SystemName>%ApplicationServer%</SystemName>
...
之後,您可以在 ICF 的 Application 元素中,定義這個參數的值:
<Application>
...
<Parameters>
<Parameter>
<Name>ApplicationServer</Name>
<Value>Server01</Value>
</Parameter>
</Parameters>
</Application>
當您建立執行個體時,Notification Services 會用 "Server01" 值來取代 ADF 中所出現的每個 %ApplicationServer%
。
在編譯執行個體時傳遞參數
如果您要將參數值保存在 ADF 和 ICF 之外,您可以在建立或更新執行個體時,或在環境變數中,提供這些值。例如,如果您利用 nscontrol 命令提示字元公用程式,來建立 Notification Services 執行個體,您可以在命令列中提供使用者名稱和密碼值。
若要將這些值傳給 ADF,您必須在 ICF 的 Application 區段中使用這些參數。在上述範例中,我們不需要在 ICF 中定義應用程式伺服器,我們可以依照這個程式碼所示來使用 %Server%
參數:
<Application>
...
<Parameters>
<Parameter>
<Name>ApplicationServer</Name>
<Value>%Server%</Value>
</Parameter>
</Parameters>
</Application>
之後,您可以在命令列中提供參數值:
nscontrol create -in "C:\NS\InstanceConfig.xml" Server=Server01
當您建立或更新執行個體時,Server01 會取代 ICF 中的 %Server%
。之後,Server01 會取代 ADF 中所出現的每個 %ApplicationServer%
。
另外,您也可以在利用 SQL Server Management Studio 來建立和更新 Notification Services 執行個體時,將參數傳給 ADF。不過,SQL Server Management Studio 只接受一個層級的參數替代。例如,只有在 B 參數本身並未參考另一個參數時,A 參數才能參考 B 參數。
參數值優先順序
您有可能在 ParameterDefaults 區段中,在環境變數中,以及在建立或更新執行個體之時,定義相同參數的值。因此,參數值會有優先順序:
- 建立或更新執行個體時所提供的參數值,優先順序最高,會覆寫環境變數中及 ParameterDefaults 區段中所提供的值。
- 環境變數會覆寫 ParameterDefaults 值。
- ParameterDefaults 值的優先權最低。
請參閱
概念
其他資源
ParameterDefaults Element (ADF)
Parameter Element (ADF)
ParameterDefaults Element (ICF)
nscontrol 公用程式
定義 Notification Services 應用程式
設定 Notification Services 的執行個體