Szoftverfejlesztés .NET platformon - Jegyzet 9. fejezet

A VIK Wikiből

70-536 .NET framework 2.0 Application Development Foundation

Konfiguráció

=System.Configuration= névtér, referencia kell a

System.Configuration.dll

-re

Configuration

  • =AppSettings=: visszaad egy referenciát a konfiguráció
    AppSettingsSection
    -ére
  • =ConnectionStrings=: visszaad egy referenciát a konfiguráció
ConnectionStringsSection

-ére

  • =GetSection(group)=: visszaad egy referenciát a kért
    ConfigurationSection
    -re
  • =FilePath=: a konfigurációs file elérési útvonala
  • =HasFile=: létezik-e a konfigurációs file
  • =Save[As]()=: elmenti a konfigurációs XML file-ba

ConfigurationManager

  • =AppSettings=, =ConnectionStrings=, =GetSection(group)=:

visszatér az alkalmazás default konfigurációjának egy szakaszával

  • =Open[Exe|Machine]Configuration=: betölti a default konfigurációs file-t az alkalmazáshoz vagy a számítógéphez
  • =OpenMapped[Exe|Machine]Configuration=: betölti a megadott konfigurációs file-t az alkalmazáshoz vagy a számítógéphez. Példa:
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "ConfigurationDemo.exe.config";
Configuration cs = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
	  

ConfigurationUserLevel

  • =None=: mindenki számára közös konfiguráció
  • =PerUserRoaming=: aktuális felhasználó részére
  • =PerUserRoamingAndLocal=: aktuális felhasználó részére (mi a különbség?)

Konfigurációs file felépítése

A konfigurációs file

Section

-ökből és

SectionGroup

-okból áll.

Egyedi =Section= beolvasáskor

  • régen az
    IConfigurationSectionHandler
    -t kellett implementálni,
    • a =Create()= metódust kell implementálni, ami visszaad egy
      HashTable
      -t
  • most a =ConfigurationSection= osztályt érdemes leszármaztatni.
    • =ConfigurationProperty= attribútummal kell ellátni a propertyket,

amiket ezek után típusosan lehet elérni

A konfigurációs file részei

  • =configuration/startup/supportedRuntime=: milyen verziójú Framework-öt igényel a program.

Ha nincs telepítve a kért verzió, a legújabbat fogja használni.

  • =configuration/runtime/developmentMode=: úgy futtatja a kódot, mintha telepítve lenne a GAC-be.

Ehhez a DEVPATH környezeti változót be kell állítani, hogy az assemblyre mutasson.

  • =configuration/runtime/.../codeBase=: megadja, hogy a hivatkozott assembly melyik verzióját

kell betölteni

  • =configuration/appSettings=: felhasználó által definiált kulcs-érték párokat tárol.

Beolvasás kódból: =ConfigurationSettings.AppSettings["kulcs"]= (elavult) vagy =ConfigurationManager.AppSettings["kulcs"]=. Egy kulcshoz több érték is tartozhat (ld. =NameValueCollection=).

  • =configuration/connectionStrings=: kulcs-connection string párok listája.

Beolvasáskor nem csak az egyes connection stringek kérdezhetők le, hanem azok részei is. Biztonsági okokból minden connection stringet titkosítani kell.

Webes alkalmazások esetén =ConfigurationManager= helyett

WebConfigurationManager

-t kell használni. A kettő működése ekvivalens, csak pár metódust neveztek át.

Application Settings

Alkalmazáshoz, nem userhez tartozó beállítások tárolása objektum-orientált módon. Megírható kézzel, de sokkal egyszerűbb designerrel csináltatni. Ehhez hozzá kell adni a projecthez egy Settings File-t, és beállítani a konfigurációs értékek nevét és típusát.

Az Application Settings szakasz típusosan is beolvasható, ehhez le kell származtatni az =ApplicationSettingsBase= osztályt, és kiegészíteni propertykkel. A propertyket el kell látni =[UserScopedSetting()]= vagy =[ApplicationScopedSetting()]= attribútummal.

class MyAppSettings : ApplicationSettingsBase {
	 [UserScopedSetting()]
	 public String Key {
		  get { return (this["Key"] as String); }
		  set { this["Key"] = value;}
	 }
}

Telepítő

Az egyedi telepítő készítésének lépései

  • Le kell származtatni az Installer ősosztályból, el kell látni =[RunInstaller(true)]= attribútummal.

A leszármaztatott osztály legyen egy assemblyben az alkalmazással.

  • Felül kell definiálni az =Install=, =Commit=, =Rollback= és =Uninstall= metódusokat.
  • Be kell regisztrálni a =Committing= és a =Committed= eseménykezelőket.
  • Meg kell hívni a telepítőt
    • parancssorból: =InstallUtil.exe [/u] MyInstaller.dll=
    • kódból: =AssemblyInstaller= és =ComponentInstaller= osztályok

.NET Framework 2.0 Configuration Tool

Administrative Tools / Microsoft .NET Framework 2.0 Configuration

  • Global Assembly Cache-ben lévő objektumokat lehet menedzselni és konfigurálni
  • Code Group-okat és Permission Set-eket lehet állítani Enterprise, Machine és User szinten.

Az alsóbb szinteken csak tiltani lehet, engedélyezni nem. A Code Group-okat az =Evidence= azonosítja (az után kapja a nevét). A Code Group-ok neve egyedi kell, hogy legyen.

  • Remotingot lehet konfigurálni

.NET biztonsági szótár (részletesen lásd az Application Security fejezetben)

  • *Code Access Security*: .NET-es megoldás annak szabályozására, hogy a nem megbízható kód mihez férhessen hozzá.
  • *Evidence*: assemblyhez kapcsolódó információ, pl.
    • alkalmazás melyik könyvtárban található
    • kiadó digitális aláírása
    • assembly digitális aláírása
    • biztonsági zóna
    • egyedi információ
  • *Code Group*: a CLR betöltéskor az Evidence alapján besorolja egy Code Group-ba az assemblyt
  • *Permission Set*: a Code Group Permission-öket tartalmaz, együtt Permission Set-nek hívnak
  • *Security Policy*: az adminisztrátor által megadott konfiguráció, ami az Evidence alapján besorolja

az assemblyt valamelyik Code Group-ba. Négyféle van belőle:

  • Enterprise: az Active Directory-n belül egy csoportba tartozó gépekre érvényes
  • Machine: az aktuális gépre érvényes
  • User: a bejelentkezett felhasználóra érvényes
  • AppDomain: a futó AppDomain-re érvényes. Csak kódból állítható.

Az Enterprise, User és AppDomain alapból full trust környezetek (mindent megengednek). A Machine korlátozott jogokat ad. Az eredő jogokat a négy Permission Set metszete adja.

-- Peti - 2007.06.27.