2016-11-03 6 views
0

Service FabricにSystem.Configuration.ConfigurationSectionと同等のものはありますか?Service FabricのカスタムConfigurationSectionの実装

既存のアプリケーションをService Fabricに移植しようとしていますが、構成セクションの実装方法の例が見つかりません。例えば

Iはapp.configを持っている場合:

<configSections> 
    <sectionGroup name="MySection" type="Company.Core.MyConfiguration"> 
     <section name="Watermark" type="System.Configuration.NameValueSectionHandler"/> 
    </sectionGroup> 
</configSections> 

<MySection> 
    <Watermark> 
     <add key="FileName" value="some.png" /> 
    </Watermark> 
</MySection> 

そしてConfigurationSectionの実装:私は

var myConfiguration = new MyConfiguration(); 
var watermarkName = myConfiguration.WatermarkConfiguration.FileName; 

public class MyConfiguration : ConfigurationSection 
{ 
    private readonly Watermark _watermark = new Watermark(); 

    public WatermarkConfiguration WatermarkConfiguration 
    { 
     get 
     { 
      return new WatermarkConfiguration 
       { 
        FileName = _watermark.FileName 
       }; 
     } 
    } 

    public class Watermark 
    { 
     private readonly NameValueCollection _watermark = 
      ConfigurationManager.GetSection("MySection/Watermark") as NameValueCollection; 

     [ConfigurationProperty("FileName")] 
     public string FileName 
     { 
      get { return _watermark["FileName"]; } 
      set { _watermark["FileName"] = value; } 
     } 
    } 
} 

public class WatermarkConfiguration 
{ 
    public string FileName { get; set; } 
} 

そしてコードで私は次のように、この構成を参照することができ誰かがこれを前にして来たと思っています。実装の変更についての洞察を得ている。

答えて

1

いいえ、拡張可能なConfigurationSectionsはありません。サービス設定は、サービスファブリック内の設定パッケージを使用して実行されます。基本的には、クラスタにデプロイする全体的なサービスパッケージに含まれるバージョン設定可能な設定ファイルのセットです(see here for more info on this structure)。

configパッケージには、XML、JSON、YAMLなどの任意の形式の任意の設定ファイルが含まれます。 Settings.xmlという特別な設定ファイルがあります。サービスファブリックには、そのファイルの設定にアクセスするためにSystem.Configurationクラスとよく似たC#APIがあります。

例えば、settings.xml内のこの設定を与える:

<?xml version="1.0" encoding="utf-8" ?> 
<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"> 

    <Section Name="IoTHubConfigInformation"> 
    <Parameter Name="ConnectionString" Value="blah" /> 
    </Section> 

</Settings> 

をあなたはこれだろう。

string iotHubConnectionString = 
      this.Context.CodePackageActivationContext 
       .GetConfigurationPackageObject("Config") 
       .Settings 
       .Sections["IoTHubConfigInformation"] 
       .Parameters["ConnectionString"] 
       .Value; 

をしかし、あなたがSystem.Configurationで行うようにあなたは、あなた自身のセクションを定義することはできません。代わりに、いくつかのラッパークラスを用意する必要があります。

+0

これは私が恐れていたものです。とにかく、これはサービスファブリックに来るものですか?処理の設定が簡単になるようです。 – CrnaStena

+0

私はバックログに入れましたが、保証はできません。私はそれがより簡単かもしれないことに同意する。 –

関連する問題