アプリケーション定義ファイル (ADF) でのパラメータの使用
XML のアプリケーション定義ファイル (ADF) で Notification Services アプリケーションを定義する場合は、パラメータを使用することによって、ADF のセキュリティおよび移植性を高め、ADF をより更新しやすくすることができます。また、インスタンス構成ファイル (ICF) から ADF に値を渡すこともできます。
アプリケーションをプログラムによって定義する場合、パラメータ オブジェクトはありません。アプリケーションの値を 1 か所で更新する場合は、変数を使用できます。
Notification Services パラメータ
Notification Services では、要素値の代わりにパラメータを使用できます。パラメータを使用すると、次のようなメリットがあります。
- 重要なデータをアプリケーション定義に格納せずに済みます。アプリケーションを作成または更新するときにだけ値を指定できます。
- パラメータ値を一度指定すれば複数の要素で使用できます。
- 変更する可能性がある値を 1 か所に配置することで、インスタンスとアプリケーションの更新が容易になります。
ADF では、置き換えられるパラメータが、%MyParam%
という形式で表されます。このパーセント文字で囲まれた、環境変数に似た部分がパラメータ名です。パラメータの値を定義するときは、パラメータ名 (MyParam
) とパラメータの値 (MyServer
など) を指定します。環境変数と同様、パラメータ名では大文字と小文字は区別されません。
アプリケーションを作成または更新すると、Notification Services によってパラメータ (%MyParam%
) が、指定した値 (MyServer
) に置き換えられます。
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>
インスタンスを作成または更新すると、ADF 内のそれぞれの %BaseDirPath%
が、Notification Services によって文字列 "C:\NS" に置き換えられます。これは、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>
インスタンスを作成すると、ADF 内のそれぞれの %ApplicationServer%
が、Notification Services によって値 Server01 に置き換えられます。
インスタンスのコンパイル時のパラメータの受け渡し
パラメータ値を 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
インスタンスを作成または更新すると、ICF 内の %Server%
が値 Server01 に置き換えられます。その後、ADF 内のすべての %ApplicationServer%
が Server01 に置き換えられます。
SQL Server Management Studio を使用して Notification Services のインスタンスを作成および更新する際に、ADF にパラメータを渡すこともできます。ただし、SQL Server Management Studio で置き換えることができるパラメータは 1 レベルのみです。たとえば、パラメータ A がパラメータ B を参照できるのは、B が別のパラメータを参照していない場合だけです。
パラメータ値の優先順位
ParameterDefaults セクション、環境変数、およびインスタンスの作成時や更新時に、それぞれ同じパラメータの値を定義することができます。このため、パラメータ値の間には、次のような優先順位があります。
- インスタンスの作成時や更新時に指定されたパラメータ値は、最も優先順位が高く、環境変数や ParameterDefaults セクションに指定された値より優先されます。
- 環境変数は、ParameterDefaults 値より優先されます。
- 最も優先順位が低いのは ParameterDefaults 値です。
参照
概念
その他の技術情報
ParameterDefaults 要素 (ADF)
Parameter 要素 (ADF)
ParameterDefaults 要素 (ICF)
nscontrol ユーティリティ
Notification Services アプリケーションの定義
Notification Services のインスタンスの構成