BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Itin paprastas App.config konfigūracijos sekcijos kūrimas

Parašė Sergejus | 2012-06-24 22:11

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!

Rodyk draugams

ITishnikai #18 – įspūdžiai iš TechEd North America

Parašė Sergejus | 2012-06-23 11:54

Šį kartą dalinames įspūdžiais iš TechEd North America tiesiai iš Floridos! Kaip visada laida prieinama mūsų Facebook puslapyje bei parsiuntimui. Labai laukiam jūsų atsiliepimų bei komentarų ir nepamirškite siūlyti kitų laidų temas bei svečius!

Nuorodos minėtos laidoje:

Rodyk draugams

Meet Windows Azure LIVE - jau šiandien

Parašė Sergejus | 2012-06-07 10:42

Jau šiandien 23 val. Lietuvos laiku meetwindowsazure.com svetainėje galėsime stebėti Scott Guthrie pristatymą, kuriame jis aptars Windows Azure naujoves (kurių bus labai-labai-labai daug). Būtinai rekomenduoju žiūrėti transliaciją!

P.S.

Tam tikros užuomenos apie naują funkcionalumą čia.

Rodyk draugams

Visual Studio, Windows ir Windows Server RC versijos jau prieinamos

Parašė Sergejus | 2012-06-02 15:53

Anksčiau negu planuota pasirodė Visual Studio, Windows bei Windows Server produktų Release Candidate versijos. Gero naudojimosi!

Rodyk draugams