Ü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.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

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.

ICLRPolicyManager

IHostPolicyManager

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.

ICLRHostProtectionManager

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.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

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.

IHostGCManager

ICLRGCManager

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.

ICLRDebugManager

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.

ICLROnEventManager

IActionOnCLREvent

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.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

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.

IHostThreadPoolManager

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.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

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.

IHostIoCompletionManager

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

AppDomainManager

Weitere Ressourcen

Bereitstellen der Common Language Runtime

Anwendungsdomänen

Hostschnittstellen für .NET Framework, Version 2.0, und höhere Versionen