次の方法で共有


Service Fabric で構成ファイルをパラメーター化する方法

この記事では、Service Fabric で構成ファイルをパラメーター化する方法について説明します。 複数の環境向けにアプリケーションを管理する基本的な概念にまだ精通していない場合は、「複数の環境向けのアプリケーションの管理」を参照してください。

構成ファイルをパラメーター化する手順

この例では、アプリケーションの展開でパラメーターを使って構成値をオーバーライドします。

  1. サービス プロジェクト内の <MyService>\PackageRoot\Config\Settings.xml ファイルを開きます。

  2. 次の XML を追加して、構成パラメーターの名前と値を設定します (たとえば、キャッシュ サイズ = 25)。

     <Section Name="MyConfigSection">
       <Parameter Name="CacheSize" Value="25" />
     </Section>
    
  3. ファイルを保存して閉じます。

  4. <MyApplication>\ApplicationPackageRoot\ApplicationManifest.xml ファイルを開きます。

  5. ApplicationManifest.xml ファイルで、Parameters 要素にパラメーターと既定値を宣言します。 パラメーター名にはサービスの名前 (たとえば "MyService") を含めることをお勧めします。

     <Parameters>
       <Parameter Name="MyService_CacheSize" DefaultValue="80" />
     </Parameters>
    
  6. ApplicationManifest.xml ファイルの ServiceManifestImport セクションに ConfigOverridesConfigOverride 要素を追加し、構成パッケージ、セクション、およびパラメーターを参照します。

     <ConfigOverrides>
       <ConfigOverride Name="Config">
           <Settings>
             <Section Name="MyConfigSection">
                 <Parameter Name="CacheSize" Value="[MyService_CacheSize]" />
             </Section>
           </Settings>
       </ConfigOverride>
     </ConfigOverrides>
    

Note

ConfigOverride を追加すると、Service Fabric は常に、アプリケーション パラメーターか、アプリケーション マニフェストで指定されている既定値を選びます。

コード内のパラメーター化された構成にアクセスする

settings.xml ファイル内の構成にプログラムでアクセスできます。 たとえば、次の構成 XML ファイルがあるとします。

<Settings
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://schemas.microsoft.com/2011/01/fabric">
	<!-- Add your custom configuration sections and parameters here -->
	<Section Name="MyConfigSection">
		<Parameter Name="MyParameter" Value="Value1" />
	</Section>
</Settings>     

パラメーターにアクセスするには、次のコードを使用します。

CodePackageActivationContext context = FabricRuntime.GetActivationContext();
var configSettings = context.GetConfigurationPackageObject("Config").Settings;
var data = configSettings.Sections["MyConfigSection"];
foreach (var parameter in data.Parameters)
{
  ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0} - {1}", parameter.Name, parameter.Value);
}

ここでは、Parameter.Name は MyParameter で、Parameter.Value は Value1 です

次のステップ

Visual Studio で使用可能なその他のアプリケーション管理機能については、 Visual Studio での Service Fabric アプリケーションの管理に関する記事をご覧ください。