Szoftverfejlesztés .NET platformon - Jegyzet 8. fejezet

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

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"}%

Application Domain

Logikai konténer, ami lehetővé teszi, hogy több assembly fusson elszeparáltan egy processzen belül. Előnye emellett, hogy míg önálló assemblyk nem törölhetők a memóriából,

AppDomain

-ek igen. Helye a hierarchiában: processz > appdomain > assembly Példa: ASP.NET-ben minden user-t külön

AppDomain

-ben futó assembly szolgál ki.

AppDomain

  • =ApplicationIndentity= (read-only)
  • =CurrentDomain= (statikus, read-only)
  • =FriendlyName=
  • =ApplyPolicy()=
  • =CreateDomain(név)=: a konstruktor helyett
  • =ExecuteAssembly(file)=: futtatás
  • =Load()=: assembly betöltése
  • =AppDomain.Unload(domain)=: =AppDomain= felszabadítása
  • =AppDomainSetup SetupInformation=: ezen keresztül lehet konfigurálni az
    AppDomain
    -t. Az =AppDomain= konstruktorában kell megadni.
    • =ApplicationBase=: alkalmazás gyökérkönyvtára
    • =DisallowCodeDownload=: nem megbízható kód letöltésének engedélyezése / tiltása

Assembly futtatása korlátozott jogokkal

Evidence

: milyen Code Group-hoz tartozik egy assembly, típusa: =object[]=

  • van host evidence és assembly evidence
  • AppDomain
    -hoz is lehet rendelni

Példa: assembly futtatása internet zónában

object[] hostEvidence = { new Zone(SecurityZone.Internet) };
Evidence internetEvidence = new Evidence(hostEvidence, null);
AppDomain domain = AppDomain.CreateDomain("MyDomain");
domain.ExecuteAssembly("UntrustedAssembly.exe", internetEvidence);

Windows Service

  • Háttérben fut egy assembly
  • Nincs UI, az üzeneteket megjelenítés helyett logolni kell
  • Csak telepítés után futtatható
  • Automatikusan is elindulhat
  • Alapból nem debuggolható, a processzhez kell csatolni a debuggert

Visual Studioban New Project / Windows Service. A =ServiceBase= leszármazottját kell kiegészíteni

  • =OnStart=, =OnStop=: mi történjen indításkor és leálláskor

(csak inicializálás, a metódusnak vissza kell térnie)

  • =OnPause=, =OnContinue=: mi történjen szüneteltetéskor és utána.

Ha lekezeljük, engedélyezni kell: =ServiceBase.CanPauseAndContinue = true=

  • =OnShutdown=: mi történjen a számítógép kikapcsolásakor

Ha lekezeljük, engedélyezni kell: =ServiceBase.CanShutdown = true=

  • =ServiceName=: =net start= / =stop= paramétere
  • =DisplayName=:
    services.msc
    -ben ez látszik
  • =Description=: pár soros leírás
  • Design nézetben Right click -> Add Installer. A generált telepítő projekt =StartType= paraméterével lehet bekapcsolni az automatikus indítást.

=Account= property: service futhat

  • =User= nevében, gépnév\felhasználónevet és jelszót kell megadni vagy a kódban, vagy a telepítéskor
  • =LocalService= nevében: anonymous felhasználó, minimális jogai vannak
  • =LocalSystem= nevében: helyi gépen maximális jogosultsággal, az operációs rendszer részeként fut (több joga van, mint a rendszergazdának)
  • NetworkService
    -ként: képes felhasználót megszemélyesíteni a hálózaton

Kézi telepítés és eltávolítás: =InstallUtil.exe [/u] myService.exe=

object[] hostEvidence = { new Zone(SecurityZone.MyComputer) };
object[] assemblyEvidence = null;
Evidence myEvidence = new Evidence(hostEvidence, assemblyEvidence)
AppDomainSetup ads = new AppDomainSetup();
ads.DisallowCodeDownload = false;
AddDomain myDomain = Application.CreateDomain("MyAppDomain", myEvidence, ads);

-- Peti - 2007.06.27.