Kaip žinia, .NET Framework turi pakankamai galingą mechanizmą konfigūracijų valdymui pagrįsta App.config / Web.config failais. Paprasčiausias būdas nurodyti ir paskui nuskaityti konfigūracijos nustatymus yra AppSettings skiltis. Paprasčiausias būdas nebūtinai visada reiškia geriausias, kaip dažnai jūsų aplikacijos nustatymai yra panašūs į pateiktus žemiau?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="system.exceptionThrotteling" value="00:01:00" />
    <add key="disk.freeSpaceThresholdInMB" value="10240" />
    <add key="disk.waitBeforeRetry" value="00:01:00" />
    <add key="file.writeQueueLength" value="15000" />
    <add key="file.workingDir" value="c:\temp" />
  </appSettings>
</configuration>

Kadangi AppSettigns skiltis neturi būdo logiškai atskirti nustatymų, mes sugalvojame skirtingus apėjimus, pavyzdžiui, prefiksus. Teisingesnis būdas būtų perkelti nustatymus į atskirą .NET konfigūracijos sekciją, pavyzdžiui:

<settings>
  <system exceptionThrotteling="00:01:00" />
  <disk freeSpaceThresholdInMB="10240" waitBeforeRetry="00:01:00" />
  <file writeQueueLength="15000" workingDir="c:\temp" />
</settings>

Nepaisant savo patogumo, konfigūracijos sekcijos turi vieną rimtą trūkumą – jos reikalauja nemažai pastangų aprašant reikalingas ConfigurationSection, ConfigurationElementCollection bei ConfigurationElement klases. Laimei, egzistuoja Visual Studio 2010 praplėtimas Configuration Section Designer, kuris leidžia itin paprastai kurti įvairaus sudėtingumo konfigūracijos sekcijas. Praplėtimą galima sudiegti tiesiai iš Extension Manager:

image

Sudiegus praplėtimą, naują konfigūracijos sekciją galima sukurti pridėjus Configuration Section Designer (.csd) failą:

image

Praplėtimas leidžia vizualiai apibrėžti konfigūracijos sekciją, jos elementus bei elementų atributus. Papildomai galima nustatyti tokias atributų savybes kaip duomenų tipas, privalomumo požymį, numatytąją reikšmę bei kitas:

image

Kaip matyti, praplėtimas sugeneravo kelis failus:

  • Settings.csd.config – pavyzdinis konfigūracijos failas, kuriame parodyta kaip reikia prijungti sugeneruotą konfigūracijos sekciją prie esamo App.config / Web.config failo
  • Settings.csd.cs – konfigūracijos sekciją aprašančios sugeneruotos C# klasės
  • Settings.csd.diagram – nusako diagramos elementų išdėstymą ekrane
  • Settings.csd.xsd – XML schema, kuri nusako leistinus konfigūracijos sekcijos elementus bei jų atributus

Norėdami pridėti sugeneruotą sekciją prie esamo App.config / Web.config failo, nukopijuokite sekcijos aprašą iš Settings.csd.config:

<configSections>
  <section name="settings" type="ConfigDemo.Settings, ConfigDemo"/>
</configSections>

Tam kad konfigūracijos sekcijoje veiktų Visual Studio IntelliSense (pagal sugeneruotą XSD failą), būtina prie sekcijos pavadinimo nurodyti XML vardų sritį:

<settings xmlns="urn:ConfigDemo">
  <system exceptionThrotteling="00:01:00" />
  <disk freeSpaceThresholdInMB="10240" waitBeforeRetry="00:01:00" />
  <file writeQueueLength="15000" workingDir="c:\temp" />
</settings>

Rezultate turime labai paprastą būdą nustatymų nuskaitymui iš konfigūracijos sekcijos Settings:

static void Main()
{
    var settings = Settings.Instance;

    var exceptionThrotteling = settings.System.ExceptionThrotteling;

    var freeSpaceThresholdInMB = settings.Disk.FreeSpaceThresholdInMB;
    var waitBeforeRetry = settings.Disk.WaitBeforeRetry;

    var writeQueueLength = settings.File.WriteQueueLength;
    var workingDir = settings.File.WorkingDir;
}

Taigi taip paprastai Configuration Section Designer praplėtimo pagalba galima kurti nuosavas konfigūracijos sekcijas. Tikiuosi jums tai bus naudinga!

Patiko (3)

Rodyk draugams