Szoftverfejlesztés .NET platformon - Jegyzet 8. fejezet

A VIK Wikiből
A lap korábbi változatát látod, amilyen Hryghr (vitalap | szerkesztései) 2013. május 19., 23:28-kor történt szerkesztése után volt. (Hryghr átnevezte a(z) Szoftverfejlesztés .NET plattformon - Jegyzet 8. fejezet lapot a következő névre: Szoftverfejlesztés .NET platformon - Jegyzet 8. fejezet: pontos név)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
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"}%

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.