Programování

Práce s doménami aplikací v .Net

Doména aplikace je nenáročný proces a funguje jako logická hranice, která poskytuje izolační hranici pro kód, zabezpečení aplikace, spolehlivost a správu verzí.

Hranice procesu se už dlouhou dobu používají k izolaci aplikací, které se spouštějí ve stejném systému. Všimněte si, že proces je spuštěná instance programu. Tato izolace pomáhá zajistit, aby aplikace byly umístěny v paměti a spouštěny v různých procesních hranicích. Takže dvě vlákna ve stejné doméně aplikace mohou navzájem komunikovat, ale dvě vlákna, která patří do dvou různých domén aplikací, nemohou.

Vlákno je nejmenší jednotka provedení v rámci procesu. V jednom procesu můžete mít více domén aplikace a uvnitř domény aplikace více než jedno vlákno. Doména aplikace (běžně se nazývá AppDomains) je logická jednotka izolace, která umožňuje spouštět více aplikací v rámci stejného procesu a současně zajistit, aby zhroucení konkrétní domény aplikace neovlivnilo fungování jiné domény aplikace.

Proč potřebujeme aplikační domény?

Společné běhové prostředí zajišťuje, že kód spuštěný uvnitř jedné aplikace nemůže přistupovat ke kódu nebo prostředkům jiné aplikace spuštěné v kontextu spravovaného prostředí. Jak toho lze dosáhnout? Spravovaný kód nebo kód, který se spouští uvnitř spravovaného prostředí, musí projít procesem ověření. Toto ověření se provádí pomocí CLR (common language runtime), aby se zajistila bezpečnost typu. Aplikační domény pomáhají CLR poskytovat požadovanou úroveň izolace, takže několik aplikací může být spuštěno v kontextu jediného procesu bez větší režie výkonu, aby se zvýšila škálovatelnost.

MSDN uvádí: „Aplikační domény poskytují bezpečnější a univerzálnější jednotku zpracování, kterou může společný jazykový modul runtime použít k zajištění izolace mezi aplikacemi. Můžete spustit několik aplikačních domén v jednom procesu se stejnou úrovní izolace, která by existovala v samostatných procesy, ale aniž by vznikly další režijní náklady na volání mezi procesy nebo přepínání mezi procesy. “

Programové vytváření domén aplikací

Než programově vytvoříme novou doménu aplikace, pojďme prozkoumat, jak můžeme načíst metadata aktuální domény aplikace a provádění sestavení pomocí C #. Následující fragment kódu ukazuje, jak můžete zobrazit doménu aplikace a názvy sestavení aktuálně provádějícího sestavení.

pomocí systému;

pomocí System.Threading;

pomocí System.Reflection;

jmenný prostor ApplicationDomains

{

třídní program

    {

static void Main (řetězec [] args)

        {

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

Console.WriteLine (Assembly.GetEntryAssembly (). CeléJméno);

Console.ReadLine ();

        }

    }

}

Podobně můžete načíst informace o metadatech hostitele a podřízených domén pomocí statických členů třídy AppDomain.

pomocí systému;

jmenný prostor ApplicationDomains

{

třídní program

    {

static void Main (řetězec [] args)

        {

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

Console.WriteLine ("Název domény hostitele je:" + AppDomain.CurrentDomain.FriendlyName);

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

Console.WriteLine ("Název podřízené domény je:" + childApplicationDomain.FriendlyName);

Console.WriteLine ("ID podřízené domény je:" + childApplicationDomain.Id.ToString ());

Console.ReadKey ();

        }

    }

}

Můžete vytvořit novou doménu aplikace pomocí jedné z přetížených metod CreateDomain třídy System.AppDomain. Všimněte si, že všechny tyto metody jsou statické, a proto je můžete vyvolat bez nutnosti vytvoření instance třídy AppDomain. Tady je seznam přetížených CreateDomain metod třídy System.AppDomain.

public static AppDomain CreateDomain (String appDomainName)

public static AppDomain CreateDomain (String appDomainName, Evidence securityInformation)

public static AppDomain CreateDomain (String appDomainName,

Evidence securityInformation, AppDomainSetup appDomainSetupInformation)

public static AppDomain CreateDomain (název řetězce,

Evidence securityInformation, String appBasePath, String appRelativeSearchPath,

bool shadowCopyFiles)

Aplikační doménu můžete vytvořit pomocí kterékoli z těchto přetížených metod CreateDomain - stačí předat název domény aplikace, kterou chcete vytvořit, jako parametr této metody. Pokud chcete, můžete také předat zásady zabezpečení jako další parametr. Metoda ExecuteAssembly se používá k načtení a provedení sestavení v doméně aplikace.

Následující výpis kódu ukazuje, jak můžete vytvořit novou doménu aplikace a poté načíst a spustit sestavení uvnitř nově vytvořené domény aplikace.

pomocí systému;

jmenný prostor ApplicationDomains

{

třídní program

    {

static void Main (řetězec [] args)

        {

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

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

Console.WriteLine („Stisknutím libovolné klávesy uvolněte doménu aplikace ...“);

Console.ReadKey ();

System.AppDomain.Unload (applicationDomain);

        }

    }

}

Po provedení výše uvedeného programu bude vytvořena nová doména aplikace s názvem „AppDomain“ a poté bude do domény aplikace načteno a provedeno sestavení (s názvem „TestCode.exe“). Vytvořená doména aplikace se po stisknutí klávesy uvolní.

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