.NET appConfig-tiedoston käsittely Visual Studion kautta
Esittelin aiemmassa blogikirjoituksessani (.NET appConfig-tiedoston käsittely) yhden tavan, jonka avulla voitiin toteuttaa .NET-sovelluksen appConfig-tiedostossa olevien asetusten käsittely. Kokemani perusteella totesin kuitenkin, että kyseinen tekniikka on hieman liian monimutkainen ja sama asia voidaan suorittaa huomattavasti yksinkertaisemminkin. Monimutkaisuutensa lisäksi aiemmin esittelemäni tekniikka voi koitua ongelmaksi, kun sovellusta ajetaan Windows-järjestelmissä rajoitetuin käyttöoikeuksin. Käyttäjän oikeudet eivät siis riitä tiedostokäsittelyä toteuttavien sovellusten suorittamiseen. Ainakin kun kyseessä on Windows Vista ja sovelluksen sijaintina on “C:\Program Files\”.
Sovellusasetukset voidaan siis luoda melko yksinkertaisesti suoraan Visual Studio:n (Visual Studio 2008) asetusten designer:n kautta (Properties –> “projektin nimi” Properties… –> Settings-välilehti).
Ennen asetusten luontia Settings-välilehden asetuksista on syytä ymmärtää muutama tärkeä seikka. Asetusten “Name”-attribuutti tarkoittaa siis asetuksen nimeä, jonka avulla ohjelmakoodissa voidaan viitata haluttuun asetukseen. “Scope”-attribuutti sen sijaan tarkoittaa asetuksen tyyppiä, johon voidaan asettaa kaksi erilaista arvoa. Mikäli arvoksi siis asetetaan “User”, niin luotu asetus on käyttäjäkohtainen kaikille Windows-järjestelmän käyttäjille erikseen. Tämän lisäksi asetukset tallentuvat erilliseen xml-tiedostoon käyttöjärjestelmän kansioon: “%systemroot%\Documents And Settings\%username%\Local Settings\Application Data\%Company%\”. Edellä mainitun polun “%Company%” tarkoittaa .NET-sovelluksen (C#-sovellus) “AssemblyInfo.cs”-tiedoston attribuutin “[assembly: AssemblyCompany("????")]” arvoa. Mikäli “Scope”-attribuutin arvoksi sitten asetetaan “Application”, niin asetus on sovelluskohtainen ja kaikille käyttäjille yhteinen. Erikoista tämän arvon saaneille asetuksille on, että kyseistä asetusta ei voi muokata sovelluksen ajonaikana (ainakaan suoraan!).
Seuraavaksi on vuorossa pienimuotoinen esimerkkisovellus, jossa käsitellään sovelluksen appConfig-tiedostoon luotuja asetuksia. Asetukset on luotu Visual Studio:n settings designer:n kautta (voit nähdä luodut asetukset aiemmasta kuvasta). Asetuksiin “form_locationX” ja “form_locationY” on tarkoitus tallentaan sovelluksen pääikkunan sijainti, kun käyttäjä painaa painiketta lomakkeelta (koodissa tapahtuma “btnTallenna_Click”). Kun sovellus sitten seuraavan kerran käynnistetään, niin pääikkuna avautuu asetustiedostosta löytyvien kordinaattien osoittamassa sijainnissa. Sovelluksen koodin toisessa painiketapahtumassa (”btnTuo_Click”) sen sijaan asetetaan sovelluksen asetuksista löytyvään “csTestitietokanta”-connectionstring:iin puuttuva data source. Kyseisen asetuksen “Scope”-attribuutille on annettu arvo “Application”.
Koodeista kannattaa huomata tekniikka, jonka avulla “Application”-tyypin asetusta voidaan muokata ajonaikana. Opin tekniikan katsomalla MSDN-sivustosta löytyvän videon, jossa kyseinen tekniikka esitellään. En siis selosta kyseistä tekniikkaa tässä sen enempää, koska video havainnollistaa sitä riittävän hyvin. Voit tarkastella esimerkkikoodeja klikkaamalla alla olevia linkkejä.
appConfig-tiedosto: Tiedosto joka on syntynyt Visual Studio:n settings designer:n kautta tehtyjen asetusten johdosta.
Settings.cs-tiedosto: Tiedostoon on luotu itse tehty ominaisuus, jonka avulla voidaan muokata “Application”-tyypin asetusta sovelluksen ajonaikana.
Esimerkkisovelluksen päälomakkeen koodi: Asetuksiin päästään käsiksi C#-kielessä nimiavaruuden “Properties.Settings.Default” kautta. Asetuksiin tehdyt muutokset voidaan tallentaa saman nimiavaruuden “Save()”-metodin avulla. On huomattava, että “Application”-tyypin asetuksia ei voida tallentaa pysyvästi, vaan tämän tyypin asetuksiin tehdyt muutokset ovat voimassa vain sovelluksen istunnon ajan.
Mikäli tätä tekniikkaa verrataan aiemmin esittelemääni, niin voidaan todeta huomattava ero muun muassa asetuksien käsittelyn yksinkertaisuudessa. Tätä tekniikka noudattaessa oma sovellus on lisäksi hieman vakaampi toiminnaltaan. Sovellusta voidaan siis ajaa rajoitetuin käyttöoikeuksin, joka on merkittävä osa Windows-järjestelmän tietoturvaa. Lisäksi sovellusten käyttäjät varmasti arvostavat sitä, että juuri heidän omat asetuksensa säilyvät aina muuttumattomana. Mikä voi olla ärsyttävämpää kuin asetusten virittäminen aina uudelleen toisen käyttäjän jäljiltä.
aihe: dotNet

