Programovanie

Práca s doménami aplikácií v .Net

Doména aplikácie je nenáročný proces a funguje ako logická hranica, ktorá poskytuje izolačnú hranicu pre kód, bezpečnosť aplikácie, spoľahlivosť a správu verzií.

Hranice procesov sa už dlho používajú na izoláciu aplikácií, ktoré sa spúšťajú v rovnakom systéme. Upozorňujeme, že proces je bežiacou inštanciou programu. Táto izolácia pomáha, aby sa aplikácie nachádzali v pamäti a spúšťali sa na rôznych hraniciach procesu. Takže dve vlákna v tej istej doméne aplikácie môžu navzájom komunikovať, ale dve vlákna, ktoré patria do dvoch rôznych domén aplikácií, nemôžu.

Vlákno je najmenšia jednotka vykonania v rámci procesu. V jednom procese môžete mať viac domén aplikácie a vo vnútri domény aplikácie viac ako jedno vlákno. Doména aplikácie (bežne sa nazýva AppDomains) je logická jednotka izolácie, ktorá umožňuje spúšťať viac aplikácií v rámci toho istého procesu a súčasne zaistiť, aby zlyhanie konkrétnej domény aplikácie neovplyvnilo fungovanie inej domény aplikácie.

Prečo potrebujeme aplikačné domény?

Bežné jazykové runtime prostredie zaisťuje, že kód bežiaci v jednej aplikácii nemôže získať prístup ku kódu alebo prostriedkom inej aplikácie bežiacej v kontexte spravovaného prostredia. Ako je to dosiahnuté? Spravovaný kód alebo kód, ktorý sa vykonáva vo vnútri riadeného prostredia, musí prejsť procesom overenia. Toto overenie sa vykonáva pomocou CLR (common language runtime), aby sa zaistila bezpečnosť typu. Aplikačné domény pomáhajú CLR poskytnúť požadovanú úroveň izolácie, aby bolo možné spustiť niekoľko aplikácií v kontexte jedného procesu, bez väčšej prevádzkovej náročnosti na zvýšenie škálovateľnosti.

MSDN uvádza: „Aplikačné domény poskytujú bezpečnejšiu a všestrannejšiu jednotku spracovania, ktorú môže spoločný jazykový modul runtime použiť na zabezpečenie izolácie medzi aplikáciami. Môžete prevádzkovať niekoľko aplikačných domén v jednom procese s rovnakou úrovňou izolácie, ktorá by existovala v samostatných procesov, ale bez ďalších nákladov na uskutočňovanie hovorov medzi procesmi alebo prepínanie medzi procesmi. ““

Programové vytváranie domén aplikácií

Predtým, ako programovo vytvoríme novú doménu aplikácie, poďme preskúmať, ako môžeme načítať metadáta aktuálnej domény aplikácie a vykonávanie zostavy pomocou C #. Nasledujúci úryvok kódu ilustruje, ako môžete zobraziť doménu aplikácie a názvy zostavy aktuálne vykonávaného zostavy.

pomocou systému;

pomocou System.Threading;

pomocou System.Reflection;

namespace ApplicationDomains

{

triedny program

    {

static void Main (reťazec [] args)

        {

Console.WriteLine (Thread.GetDomain (). FriendlyName);

Console.WriteLine (Assembly.GetEntryAssembly (). CeléMeno);

Console.ReadLine ();

        }

    }

}

Podobne môžete získať informácie o metaúdajoch hostiteľa a podradených domén pomocou statických členov triedy AppDomain.

pomocou systému;

namespace ApplicationDomains

{

triedny program

    {

static void Main (reťazec [] args)

        {

AppDomain childApplicationDomain = AppDomain.CreateDomain ("ApplicationDomain");

Console.WriteLine ("Názov hostiteľskej domény je:" + AppDomain.CurrentDomain.FriendlyName);

Console.WriteLine ("ID hostiteľskej domény je:" + AppDomain.CurrentDomain.Id.ToString ());

Console.WriteLine ("Názov podradenej domény je:" + childApplicationDomain.FriendlyName);

Console.WriteLine ("ID podradenej domény je:" + childApplicationDomain.Id.ToString ());

Console.ReadKey ();

        }

    }

}

Môžete vytvoriť novú doménu aplikácie pomocou jednej z preťažených metód CreateDomain triedy System.AppDomain. Upozorňujeme, že všetky tieto metódy sú statické, a preto ich môžete vyvolať bez potreby inštancie triedy AppDomain. Tu je zoznam preťažených metód CreateDomain triedy System.AppDomain.

verejná statická AppDomain CreateDomain (reťazec appDomainName)

verejná statická AppDomain CreateDomain (reťazec appDomainName, Evidence securityInformation)

verejná statická AppDomain CreateDomain (reťazec appDomainName,

Evidencia securityInformation, AppDomainSetup appDomainSetupInformation)

verejná statická AppDomain CreateDomain (názov reťazca,

Dôkazy securityInformation, String appBasePath, String appRelativeSearchPath,

bool shadowCopyFiles)

Aplikačnú doménu môžete vytvoriť pomocou ktorejkoľvek z týchto preťažených metód CreateDomain - tejto metóde môžete jednoducho zadať názov aplikačnej domény, ktorú chcete vytvoriť. Ak chcete, môžete tiež odovzdať bezpečnostné politiky ako ďalší parameter. Metóda ExecuteAssembly sa používa na načítanie a vykonanie zostavenia v doméne aplikácie.

Nasledujúci zoznam kódov ukazuje, ako môžete vytvoriť novú doménu aplikácie a potom načítať a vykonať zhromaždenie vo vnútri novo vytvorenej domény aplikácie.

pomocou systému;

namespace ApplicationDomains

{

triedny program

    {

static void Main (reťazec [] args)

        {

AppDomain applicationDomain = System.AppDomain.CreateDomain ("AppDomain");

applicationDomain.ExecuteAssembly (@ "D: \ Projects \ TestCode.exe");

Console.WriteLine („Stlačením ľubovoľnej klávesy vyložíte doménu aplikácie ...“);

Console.ReadKey ();

System.AppDomain.Unload (applicationDomain);

        }

    }

}

Po vykonaní vyššie uvedeného programu sa vytvorí nová aplikačná doména s názvom „AppDomain“ a potom sa do aplikačnej domény načíta zostava (s názvom „TestCode.exe“), ktorá sa vykoná. Vytvorená doména aplikácie sa po stlačení klávesu uvoľní.

$config[zx-auto] not found$config[zx-overlay] not found