Erstellen und Konfigurieren von Anwendungsdomänen

Nachdem durch den Host anhand der im vorigen Abschnitt beschriebenen Kriterien die Grenzen der Domäne festgelegt wurden, wird mit der CreateDomain-Methode des System.AppDomain-Typs eine Domäne erstellt, in der der Benutzercode ausgeführt wird. Jede Anwendungsdomäne enthält eine Sammlung von Name/Wert-Paaren, in der ein Host Informationen über eine Domäne speichern kann. Diese Name/Wert-Paare werden als Parameter an CreateDomain weitergegeben.

.NET Framework legt eine Anzahl von Eigenschaften fest, die direkt von Common Language Runtime interpretiert werden können. Die Namen dieser Eigenschaften werden durch die statischen Zeichenfolgen in der System.AppDomain-Klasse definiert. Ein Host kann die Eigenschaften, die direkt interpretiert werden können, festlegen, um die Anwendungsdomäne anzupassen. Mithilfe dieser Eigenschaften kann z. B. gesteuert werden, wie der in verschiedenen Domänen ausgeführte Code isoliert wird. Das Name/Wert-Paar kann so erweitert werden, dass Hosts in der Lage sind, benutzerdefinierte Eigenschaften festzulegen, in denen für das jeweilige Szenario spezifische Informationen gespeichert werden.

Im Allgemeinen stehen in Anwendungsdomänen zwei Arten der Isolierung zur Verfügung:

  • Es wird verhindert, dass in einer Anwendungsdomäne ausgeführter Code andere Domänen beeinflusst, indem ausgeschlossen wird, dass Typen einer Domäne Zugang zu Typen anderer Domänen haben oder diese aufrufen können. Dabei wird in Anwendungsdomänen davon ausgegangen, dass Code zum Schutz gegen Speicherfehler überprüft wurde.

  • Durch den Host wird gesteuert, wo Code für Comon Language Runtime zur Verfügung steht, der in eine bestimmte Anwendungsdomäne geladen werden soll. Dies ist deshalb wichtig, weil dadurch verhindert wird, dass Code einer Anwendung unbeabsichtigt eine andere Anwendung beeinflusst. Die Möglichkeit, Anforderungen so zuzuweisen, dass Code auf diese Weise geladen werden kann, unterscheidet diese Methode deutlich von dem unter Microsoft Win32 und COM derzeit angewendeten Verfahren. In Windows erstreckt sich der Auflösungsbereich auf den gesamten Computer, da jede Anwendung Code verwenden kann, der in der Registrierung eingetragen ist oder sich im Windows-Systemverzeichnis befindet. Gemeinsame Nutzung dieser Art ist derzeit Standard, trägt jedoch zu DLL-Konflikten bei.

Neben der Einrichtung eines Gültigkeitsbereichs für das Laden von Code ist auch das Zuweisen eines Bereichs für die Konfigurationsdaten einer Anwendung von Bedeutung. Dies ist jedoch derzeit für viele Konfigurationseinstellungen nicht möglich.

Wenn Sie beispielsweise einen Remotecomputer konfigurieren, auf dem eine COM-Klasse ausgeführt werden soll, beeinflusst die Einstellung des RemoteServerName-Schlüssels in der Registrierung für eine bestimmte Klasse alle Anwendungen, die diese Klasse verwenden. Ähnlich wie die unbeabsichtigte gemeinsame Nutzung von Code führt auch die unbeabsichtigte gemeinsame Nutzung von Konfigurationsdaten dazu, dass das Anwendungsverhalten nicht mehr unabhängig steuerbar ist.

Die AppDomainSetup.ApplicationBase-Eigenschaft und die AppDomainSetup.ConfigurationFile-Eigenschaft steuern die Fähigkeit, Verzeichnisse festzulegen, in denen die Common Language Runtime nach Assemblys sucht und den Gültigkeitsbereich der Konfigurationseinstellungen einer bestimmten Anwendungsdomäne festlegt.

ApplicationBase richtet ein Stammverzeichnis für die Anwendungsdomäne ein, in dem die Common Language Runtime nach privaten Assemblys sucht. Wenn ein Host gestattet, Assemblys von einem Datenträger zu laden, muss Common Language Runtime durch ApplicationBase darüber informiert werden, wo die geladenen Assemblys zu finden sind.

Die ConfigurationFile-Eigenschaft gibt den Namen einer XML-Datei an, die Einstellungen zum Konfigurieren der in der Anwendungsdomäne ausgeführten Anwendung enthält. Die Einstellungen in der Anwendungskonfigurationsdatei umfassen z. B. Regeln für das Assemblyversioning und Anweisungen zum Suchen von Typen, die von den in der Anwendungsdomäne ausgeführten Typen remote abgerufen werden können.

Beschreibungen anderer Eigenschaften zum Konfigurieren einer Anwendungsdomäne finden Sie in der Dokumentation zur AppDomain-Klasse.

Sicherheitshinweis Der Standardwert für die AppDomainSetup.DisallowCodeDownload-Eigenschaft ist false. Diese Einstellung ist für Dienste nicht sicher. Legen Sie diese Eigenschaft auf true fest, um das Herunterladen von teilweise vertrauenswürdigem Code durch Dienste zu verhindern.

Siehe auch

Referenz

AppDomain

Weitere Ressourcen

Hosting (Referenz zur nicht verwalteten API)