Übersicht über Hosting
Aktualisiert: November 2007
.NET Framework, Version 2.0, aktiviert Anwendungen, die die Common Language Runtime (CLR) hosten und die Steuerung der darin enthaltenen Features ermöglichen. Sie können einige Features (z. B. die Speicherreservierung und das Laden von Assemblys) durch benutzerdefinierte Implementierungen ersetzen. Sie können das Verhalten von anderen Features steuern, Benachrichtigungen von Ereignissen in der Common Language Runtime erhalten und Anwendungsdomänen verwalten.
Initialisieren und Starten einer gehosteten Common Language Runtime
Wie bei früheren Versionen wird die Common Language Runtime von der CorBindToRuntimeEx-Funktion initialisiert. Sie können auswählen, welche Version der Common Language Runtime geladen werden soll, aber ein Prozess kann nur eine Version hosten. Wenn Version 2.0 geladen wird, gibt die Funktion die ICLRRuntimeHost-Schnittstelle zurück, mit der die Common Language Runtime gestartet und verwalteter Code ausgeführt wird.
Hinweis: |
---|
In früheren Versionen wird die ICorRuntimeHost-Schnittstelle zurückgegeben. |
Das Starten der Common Language Runtime wird in Laden der Common Language Runtime in einen Prozess behandelt, das Ausführen von verwaltetem Code in Übergang in verwalteten Hostcode.
Hosten von Verwaltungsschnittstellen
In .NET Framework Version 2.0 bietet CLR Hosting-Verwaltungsschnittstellen zum Steuern zahlreicher Funktionen der gehosteten Laufzeit, aktiviert die Hostanwendung zum Implementieren anderer Verwaltungsschnittstellen, die von der Laufzeit zur Verfügung gestellt werden, und ermöglicht Ihnen die Implementierung eigener Hosting-Verwaltungsschnittstellen.
Zur Unterscheidung werden die Verwaltungsschnittstellen in zwei große Kategorien unterteilt:
Verwaltungsschnittstellen, die der Host implementiert, und die Laufzeit durch die IHostControl-Schnittstelle ermittelt.
Verwaltungsschnittstellen, die die CLR bereitstellt, und der Host durch die ICLRControl-Schnittstelle ermittelt.
In der folgenden Tabelle werden die Schnittstellen nach der Art der von ihnen bereitgestellten Funktionalität zusammengefasst. Die wichtigste Schnittstelle in der jeweiligen Gruppe wird zuerst aufgelistet.
Gruppe |
Funktion |
Schnittstellen |
---|---|---|
Assemblyladeverwaltung |
Ermöglicht dem Host, die Speicherorte, von denen Assemblys geladen werden, die Art der Versionsverwaltung und die Formate, von denen Assemblys geladen werden können, anzupassen. Zum Beispiel könnten Assemblys aus einer Datenbank anstatt von Dateien auf der Festplatte geladen werden. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
Richtlinienverwaltung |
Ermöglicht dem Host, die Art anzugeben, wie Programmfehler behandelt werden, um verschiedene Zuverlässigkeitsanforderungen zu unterstützen. Der Host kann mithilfe der ICLRControl-Schnittstelle auf den Laufzeit-Manager zugreifen und implementiert IHostPolicyManager-Rückrufe für Fehlermeldungen von der Common Language Runtime. |
|
Hostschutzverwaltung |
Ermöglicht es dem Host, sein eigenes Programmiermodell zu erzwingen, indem er die Verwendung von angegebenen Typen oder Membern verhindert. Zum Beispiel kann der Host die Verwendung von Threading oder Synchronisierungsprimitiven unterbinden. Der Host greift über die ICLRControl-Schnittstelle auf den Laufzeit-Manager zu. |
|
Speicherverwaltung |
Ermöglicht es dem Host, die Speicherreservierung zu steuern, indem er Ersatz für die Betriebssystemfunktionen bereitstellt, mit denen die Common Language Runtime Speicher reserviert. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
Garbage Collection-Verwaltung |
Ermöglicht es dem Host, Methoden zu implementieren, um Meldungen von Anfang und Ende der Garbage Collection zu empfangen. Ermöglicht es dem Host, Auflistungen zu initiieren, Statistiken zu sammeln und einige Eigenschaften der Auflistung anzugeben. Der Host greift über die ICLRControl-Schnittstelle auf den Laufzeit-Manager zu. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
Debugverwaltung |
Ermöglicht es dem Host, festzustellen, ob ein Debugger verbunden ist, zusätzliche Debuginformationen bereitzustellen und Debugaufgaben anzupassen. Der Host greift über die ICLRControl-Schnittstelle auf den Laufzeit-Manager zu. |
|
CLR-Ereignisverwaltung |
Ermöglicht es einem Host, sich für die Benachrichtigung über die Ereignisse zu registrieren, die von EClrEvent aufgelistet werden. Der Host greift über die ICLRControl-Schnittstelle auf den Laufzeit-Manager zu und implementiert seine Ereignishandler mithilfe der IActionOnCLREvent-Schnittstelle. |
|
Aufgabenverwaltung |
Ermöglicht es dem Host, benachrichtigt zu werden, wenn ein Thread einen Übergang zwischen verwaltetem und nicht verwaltetem Code durchführt. Ermöglicht es dem Host, die Threadaffinität zu steuern und zu bestimmen, wann Aufgaben gestartet und beendet und wie sie geplant werden. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
Threadpoolverwaltung |
Ermöglicht es dem Host, seinen eigenen Threadpool für die zu verwendende Laufzeit zu implementieren. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
Synchronisierungsverwaltung |
Ermöglicht es dem Host, seine eigenen Synchronisierungsprimitive für die zu verwendende Laufzeit zu implementieren. Der Host kann Ereignisse, kritische Abschnitte und Semaphore bereitstellen. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
|
E/A-Vervollständigungsverwaltung |
Ermöglicht es dem Host, seine eigene Implementierung von asynchroner Eingabe/Ausgabe zu implementieren. Die CLR verwendet die IHostControl-Schnittstelle, um zu ermitteln, ob ein Host diese Gruppe von Schnittstellen implementiert. |
Hinweis: |
---|
Die Hostschnittstellen für frühere Versionen der Laufzeit sind in Hostschnittstellen für .NET Framework, Versionen 1.0 und 1.1 dokumentiert. |
Anwendungsdomänen-Manager
Für Programme, die die CLR hosten, bieten Anwendungsdomänen durch die Isolation der Assemblys voneinander eine größere Zuverlässigkeit. Assemblys können vom Prozess durch das Entladen von Anwendungsdomänen entladen werden.
Um mehrere Anwendungsdomänen zu verwalten, stellt .NET Framework, Version 2.0, die AppDomainManager-Klasse als Basisklasse bereit, von der Sie eigene Anwendungsdomänen-Manager ableiten können. Der Anwendungsdomänen-Manager, den Sie für Ihre Hostanwendung entwerfen, ist im Wesentlichen eine Hosterweiterung in verwaltetem Code. Er wird automatisch in jede im Prozess erstellte Anwendungsdomäne geladen.
Der Anwendungsdomänen-Manager kann die Leistung verbessern, indem er einige Übergänge zwischen verwaltetem und nicht verwaltetem Code beseitigt. Er kann Meldungen von der Erstellung neuer Anwendungsdomänen erhalten, sodass Sie diese konfigurieren können. Außerdem stellt er einen nicht verwalteten Host bereit, mit der Möglichkeit, verwalteten Code aufzurufen.
Siehe auch
Konzepte
Laden der Common Language Runtime in einen Prozess
Referenz
Weitere Ressourcen
Bereitstellen der Common Language Runtime
Hostschnittstellen für .NET Framework, Version 2.0, und höhere Versionen