Bestimmen von Begrenzungen für Anwendungsdomänen

Aktualisiert: November 2007

Nach dem Übergang des Hostcodes von nicht verwaltetem Code in verwalteten Code müssen eine oder mehrere neue Anwendungsdomänen erstellt werden, in denen der Benutzercode ausgeführt wird. Eine Anwendungsdomäne ist ein Konstrukt, mit dem Hosts Code isolieren, der innerhalb eines Prozesses ausgeführt wird. Diese Isolierung ist notwendig, um sicherzustellen, dass keine unbeabsichtigte Interaktion von Code mit anderem Code stattfindet. Beispielsweise muss Code, der von zwei verschiedenen Websites in Internet Explorer gedownloadet wurde, getrennt bleiben. Der Internet Explorer-Host erstellt für jede Site eine Anwendungsdomäne, um diese Isolierung sicherzustellen.

Bevor ein Host eine Anwendungsdomäne erstellen kann, in der Benutzercode ausgeführt werden soll, müssen die Grenzen der neuen Anwendungsdomäne festgelegt werden. Zu den Faktoren, die diese Festlegung beeinflussen, gehören Anforderungen zur Beschränkung des Zugriffs bestimmter Typen auf andere Typen, Konfigurationen, Sicherheitsmaßnahmen und die Möglichkeit, nicht mehr benötigten Code zu entladen.

Einschränken des Zugriffs auf Typen

Ein in einer Anwendungsdomäne ausgeführter Typ kann die in derselben Domäne ausgeführten anderen Typen erkennen und diese direkt aufrufen. Typen, die in anderen Anwendungsdomänen ausgeführt werden, können jedoch nicht ausfindig gemacht und folglich auch nicht ausgeführt werden. Die Möglichkeit, den Zugriff eines Typs auf andere Typen zu beschränken, sollte bei der Festlegung von Domänengrenzen vorrangig berücksichtigt werden.

Konfigurationseinstellungen

Anwendungsdomänen sind primäre Einheiten zur Konfiguration von Common Language Runtime. Jede Anwendungsdomäne verfügt über eine optionale, verknüpfte Konfigurationsdatei, welche die für die Ausführung des Codes in der Domäne relevanten Einstellungen enthält.

Eine Konfigurationsdatei kann z. B. eine Verzeichnisliste enthalten, in der sich private Assemblys, versionsverbindliche Information für gemeinsam verwendete Assemblys, der Speicherort von remote abrufbaren Typen usw. befinden.

Sicherheit

Hosts können für eine Domäne sowohl Richtlinien für Codezugriffssicherheit als auch rollenbasierte Sicherheitsrichtlinien einstellen. Damit können durch den Host sowohl die dem Code einer bestimmten Domäne gewährten Berechtigungen gesteuert als auch der Principal des aktuellen Threads sowie der Standardprincipal für rollenbasierte Sicherheit eingestellt werden.

Beispielsweise könnte durch einen Host die Sicherheitsrichtlinie für den Codezugriff der Anwendungsdomänenebene festgelegt werden, um sicherzustellen, dass nur von einer bestimmten Site gedownloadeter Code in der Domäne ausgeführt werden kann. Alternativ könnten auf einem Host rollenbasierte Sicherheitsprincipals eingerichtet werden, um ein benutzerdefiniertes Authentifizierungsschema zu implementieren.

Entladen von Code

Um verwalteten Code, der in einem Prozess ausgeführt wird, aus dem Speicher zu entladen und den Speicher dadurch für andere Zwecke zu entlasten, muss die Anwendungsdomäne entladen werden, in der der Code ausgeführt wird. Einzelne Assemblys oder Typen können nicht entladen werden. Es gibt hosteigene Regeln, die bestimmen, wann Benutzercode entladen werden kann. Ein Internetbrowser kann beispielsweise verwaltete Steuerelemente in eine durch eine Site festgelegte Domäne laden. Für den Browser kann darüber hinaus die Regel gelten, dass die zuletzt aufgerufenen Seiten im Speicher verbleiben, sodass die Schaltflächen Vor und Zurück schneller reagieren. Wenn im Browser festlegt ist, dass eine Seite im Speicher nicht mehr benötigt wird, wird die Anwendungsdomäne und damit auch der Code für die verwalteten Steuerelemente gelöscht.

Siehe auch

Weitere Ressourcen

Bereitstellen der Common Language Runtime

Anwendungsdomänen