Szoftverfejlesztés .NET platformon - Jegyzet 9. fejezet

A VIK Wikiből
A lap korábbi változatát látod, amilyen Hryghr (vitalap | szerkesztései) 2013. május 19., 21:28-kor történt szerkesztése után volt. (Hryghr átnevezte a(z) Szoftverfejlesztés .NET plattformon - Jegyzet 9. fejezet lapot a következő névre: Szoftverfejlesztés .NET platformon - Jegyzet 9. fejezet: pontos név)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


70-536 .NET framework 2.0 Application Development Foundation

%TOC{depth="3"}%

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.