Szoftverfejlesztés .NET platformon - Jegyzet 8. fejezet
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.