Szoftverfejlesztés .NET platformon - Jegyzet 9. fejezet
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
- a =Create()= metódust kell implementálni, ami visszaad egy
- 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.