Sdílet prostřednictvím


Domény aplikace

Operační systémy a běhová prostředí obvykle poskytují určitou formu izolace mezi aplikacemi. Například systém Windows používá procesy k izolaci aplikací. Tato izolace je nezbytná pro zajištění toho, aby spuštěný kód v jedné aplikaci nemohl nepříznivě ovlivnit jiné nesouvisející aplikace.

Aplikační domény poskytují izolační hranici, pro zabezpečení, spolehlivost, správu verzí a pro uvolňování sestavení. Aplikační domény jsou obvykle vytvářeny hostitelskými prostředími modulu runtime, která jsou odpovědná za zavedení modulu CLR (Common Language Runtime) před spuštěním aplikace.

Témata v tomto oddíle dokumentace vysvětlují, jak použit aplikační domény k poskytování izolace mezi sestaveními.

Tento přehled obsahuje následující oddíly:

  • Výhody izolace aplikací

  • Příbuzná témata

  • Odkaz

Výhody izolace aplikací

V minulosti byly hranice procesů používány k izolaci aplikací spuštěných na stejném počítači. Každá aplikace je načtena jako samostatný proces, který izoluje aplikaci od jiných aplikací spuštěných na stejném počítači.

Aplikace jsou izolovány kvůli tomu, že adresy paměti jsou procesně relativní; ukazatel paměti předaný z jednoho procesu jinému nemůže být použit žádným smysluplným způsobem v cílovém procesu. Kromě toho není možné přímé volání mezi dvěma procesy. Místo toho je nutné použít proxy servery, které zajišťují určitou úroveň dereference.

Je nutné, aby spravovaný kód před spuštěním prošel skrz ověřovací proces (ledaže by správce udělil oprávnění k přeskočení ověření). Ověřovací proces určuje, zda se kód může pokusit získat přístup k neplatné adrese paměti nebo provede nějakou jinou akci, která může způsobit nesprávné fungování procesu, ve kterém je spuštěn. Kód, který projde ověřovacím testem je označen jako typově bezpečný. Schopnost ověřit kód jako typově bezpečný, umožňuje modulu CLR (Common Language Runtime) poskytovat tak skvělou úroveň izolace jako je hranice procesu a to za mnohem nižší výkonnostní náklady.

Aplikační domény poskytují bezpečnější a všestranější jednotky zpracování, které modul CLR (Common Language Runtime) může použít k poskytnutí izolace mezi aplikacemi. V jediném procesu je možné spustit několik domén aplikace se stejnou úrovní izolace, která by existovala v oddělených procesech, ale bez další režie způsobující mezi procesní volání nebo přepínání mezi procesy. Možnost spuštění více aplikací v rámci jediného procesu výrazně zvyšuje škálovatelnost serveru.

Izolování aplikace je také důležité kvůli jejímu zabezpečení. Například je možné spustit ovládací prvky z několika webových aplikací v jediném procesu prohlížeče takovým způsobem, aby si ovládací prvky nemohly vzájemně přistupovat k datům a zdrojům.

Izolace poskytovaná aplikačními doménami má následující výhody:

  • Chyby v jedné aplikaci nemůžou ovlivnit jiné aplikace. Vzhledem k tomu, že kód zajišťující bezpečnost typů nemůže způsobit chyby paměti, tak se pomocí aplikačních domén zajišťuje, aby kód spuštěný v jedné doméně nemohl ovlivnit jiné aplikace v procesu.

  • Jednotlivé aplikace mohou být ukončeny bez ukončení celého procesu. Použití aplikačních domén umožňuje uvolnit kód spuštěný v samostatné aplikaci.

    PoznámkaPoznámka

    Není možné uvolnit samostatná sestavení nebo typy.Pouze úplná doména může být uvolněna.

  • Kód spuštěný v jedné aplikaci nemůže přímo přistupovat ke kódu nebo prostředkům jiné aplikace. Modul CLR (Common Language Runtime) vynucuje tuto izolaci proto, aby zabránil přímým voláním mezi objekty v různých aplikačních doménách. Objekty, které prochází mezi doménami jsou buď zkopírovány nebo zpřístupněny pomocí proxy serveru. Pokud je objekt zkopírován, volání objektu je lokální. To znamená, že oba, jak volající tak i odkazovaný objekt jsou ve stejné doméně aplikace. Pokud je objekt zpřístupněný prostřednictvím proxy serveru, tak je volání objektu vzdálené. V tomto případě se volající a odkazovaný objekt nachází v různých doménách aplikace. Volání mezi doménami používá stejnou infrastrukturu vzdáleného volání jako volání mezi dvěma procesy nebo mezi dvěma stroji. Je nutné, aby metadata pro odkazovaný objekt byla k dispozici pro obě domény aplikace. Díky tomu je možné takové volání metod, které zaručuje jejich správnou JIT kompilaci. Pokud volající doména nemá přístup k metadatům pro volaný objekt, tak kompilace může selhat a dojde k výjimce typu System.IO.FileNotFound. Více podrobností naleznete v tématu Remote Objects. Mechanismus pro stanovení toho, jak mohou být objekty přístupné napříč doménami je určen objektem. Další informace naleznete v tématu MarshalByRefObject Class.

  • Chování kódu je určeno aplikací, ve které běží. Jinými slovy aplikační doména poskytuje nastavení konfigurace. Konfigurovat například lze: zásady stanovování verzí aplikace, umístění jakýchkoliv vzdálených sestavení, k nimž přistupuje a informace o tom, kde nalézt sestavení, která jsou načtena do domény.

  • Oprávnění udělená kódu mohou být řízena doménou aplikace, ve které je kód spuštěn.

Zpět na začátek

Příbuzná témata

Title

Popis

Domény aplikace a sestavení

Popisuje relace mezi doménami aplikace a sestaveními.

Domény aplikace a vlákna

Popisuje relace mezi doménami aplikace a vlákny operačního systému.

Programování pomocí domén aplikace

Popisuje, jak programovat s aplikačními doménami.

Hosting Overview

Popisuje, jak vytvořit a konfigurovat domény aplikace.

Hostitelská prostředí modulu runtime

Popisuje způsob použití hostitelského prostředí modulu runtime.

Zpět na začátek

Odkaz

System.MarshalByRefObject

Zpět na začátek