Übersicht über Hosting

.NET Framework-Anwendungen hosten automatisch die Common Language Runtime, für die sie erstellt wurden. Wenn Sie den verwalteten Code als EXE-Assembly kompilieren, wird die Common Language Runtime bei der Ausführung der EXE-Datei automatisch von mscoree.dll gestartet. Nicht verwaltete Anwendungen können ebenfalls vom Hosten der Common Language Runtime profitieren. In der Common Language Runtime steht ein Framework zur Verfügung, um Anwendungen wie Internetinformationsdienste (IIS) und SQL Server 2005 zu erweitern.

Eine .NET Framework-Anwendung benötigt einen Codeabschnitt mit dem Namen runtime host, unabhängig davon, ob sie (wie bei verwalteten EXE-Assemblys) automatisch aufgerufen oder mithilfe der nicht verwalteten Host-API geladen wird. Der Laufzeithost lädt die Common Language Runtime in einen Prozess, erstellt Anwendungsdomänen innerhalb des Prozesses, lädt Benutzercode und führt ihn innerhalb dieser Anwendungsdomänen aus.

.NET Framework, Version 2.0, ermöglicht Anwendungen, die die CLR hosten, das Steuern zahlreicher Funktionen der Laufzeit. Sie können einige Features (z. B. die Speicherbelegung 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.

.NET Framework 4 konsolidiert viele Hosting-APIs von Version 2.0. Außerdem unterstützt .NET Framework 4 die prozessinterne Aktivierung paralleler Laufzeithosts, und sie stellt weitere Verbesserungen bereit.

Diese Übersicht enthält folgende Abschnitte:

  • Initialisieren und Starten einer gehosteten Runtime

  • .NET Framework 2.0-Hostingverwaltungsschnittstellen

  • .NET Framework 4-Hostingverwaltungsschnittstellen

  • Anwendungsdomänen-Manager

  • Verwandte Themen

  • Verweis

Initialisieren und Starten einer gehosteten Runtime

Die Hosting-API von .NET Framework 4 stellt die CLRCreateInstance-Funktion bereit, die die ICLRMetaHost-Schnittstelle zurückgeben kann. Sie können dann die GetRuntime-Methode für diese Schnittstelle aufrufen, um eine bestimmte ICLRRuntimeInfo-Schnittstelle abzurufen, wenn eine bestimmte CLR-Version angegeben wurde. Dieses Verfahren ersetzt die CorBindToRuntimeEx-Methode, die von der .NET Framework 2.0-Hosting-API verwendet wird.

Die Hosting-API von .NET Framework, Version 2.0, stellt die CorBindToRuntimeEx-Funktion bereit, um die Laufzeit zu initialisieren. 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, 3.0 oder 3.5 geladen ist, gibt die Funktion die ICLRRuntimeHost-Schnittstelle zurück, mit der die Laufzeit gestartet und verwalteter Code ausgeführt wird.

Die Hosting-API von .NET Framework, Version 1, stellt die ICorRuntimeHost-Schnittstelle bereit.

Das Starten der Common Language Runtime wird in Laden der Laufzeit in einen Prozess behandelt, das Ausführen von verwaltetem Code in Übergang in verwalteten Hostcode.

Zurück nach oben

.NET Framework 2.0-Hostingverwaltungsschnittstellen

In .NET Framework 2.0 stellt die CLR Hostingverwaltungsschnittstellen zum Steuern zahlreicher Funktionen der gehosteten Laufzeit bereit, sie ermöglicht das Implementieren anderer von der Laufzeit bereitgestellter Verwaltungsschnittstellen durch die Hostanwendung, und sie lässt Sie eigene Hostingverwaltungsschnittstellen implementieren.

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 Speicherbelegung 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 Veraltete CLR-Hostingschnittstellen und Co-Klassen dokumentiert.

Zurück nach oben

.NET Framework 4-Hostingverwaltungsschnittstellen

.NET Framework 4 konsolidiert die 2.0 Hosting-API innerhalb der folgenden Schnittstellen:

  • ICLRMetaHost stellt Methoden bereit, die eine bestimmte Version der CLR zurückgeben, alle installierten CLRs aufführen, alle prozessinternen Laufzeiten aufführen, die Aktivierungsschnittstelle zurückgeben und die zum Kompilieren einer Assembly verwendete CLR-Version ermitteln.

  • ICLRMetaHostPolicy gibt die GetRequestedRuntime-Methode an, die eine CLR-Schnittstelle auf Grundlage eines Richtlinienkriteriums, einer verwalteten Assembly, einer Version und einer Konfigurationsdatei bereitstellt.

  • ICLRRuntimeInfo stellt Methoden bereit, die Informationen zu einer bestimmten Laufzeit zurückgeben, einschließlich Version, Verzeichnis und Auslastungsstatus.

  • ICLRStrongName gruppiert alle globalen statischen Funktionen für starke Namen der CLR, Version 2.0, die von MSCorEE.dll in eine einzelne Schnittstelle exportiert werden (außer StrongNameErrorInfo). Alle ICLRStrongName-Methoden geben standardmäßige COM-HRESULTS zurück.

Diese Schnittstellen kapseln und ersetzen die .NET Framework 2.0-Hosting-Schnittstellen.

Zurück nach oben

Anwendungsdomänen-Manager

Für Programme, die die Common Language Runtime 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 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 Benachrichtigungen über die Erstellung neuer Anwendungsdomänen empfangen und Ihnen die Möglichkeit bieten, diese zu konfigurieren. Der Anwendungsdomänen-Manager ermöglicht außerdem das Aufrufen von verwaltetem Code durch einen nicht verwalteten Host.

Zurück nach oben

Verwandte Themen

Titel

Beschreibung

Laden der Laufzeit in einen Prozess

Beschreibt, wie die Laufzeit in einen Prozess geladen und initialisiert wird, und wie Werte festgelegt werden, um ihr Verhalten anzugeben.

Entladen von Domänen und Beenden eines Prozesses

Beschreibt, wie eine Anwendungsdomäne entladen und ein Prozess beendet wird.

Festlegen von rollenbasierten Sicherheitsrichtlinien und Principals

Beschreibt, wie eine rollenbasierte Sicherheitsrichtlinie eingestellt wird.

Festlegen von Sicherheitsrichtlinien auf Anwendungsdomänenebene

Beschreibt, wie eine Sicherheitsrichtlinie für die Anwendungsdomänenebene eingestellt wird.

Laden und Ausführen von Benutzercode

Beschreibt, wie Benutzercode geladen und ausgeführt wird.

Erstellen und Konfigurieren von Anwendungsdomänen

Beschreibt, wie Anwendungsdomänen, in denen Benutzercode ausgeführt werden soll, erstellt und konfiguriert werden.

Bestimmen von Begrenzungen für Anwendungsdomänen

Beschreibt, wie die Grenzen für eine neue Anwendungsdomäne ermittelt werden.

Übergang in verwalteten Hostcode

Beschreibt den Übergang von nicht verwaltetem Code zum Ausführen von verwaltetem Hostcode und Benutzercode.

Aktivierungskonfigurationsdateien

Beschreibt das Aktivieren einer anderen Version der Laufzeit als der in der Anwendungskonfigurationsdatei angegebenen Laufzeit.

Laufzeithosts

Beschreibt die im .NET Framework enthaltenen Hosts.

Anwendungsdomänen

Beschreibt die von Hosts verwendeten Konstrukte zur Isolierung von Code, der innerhalb eines Prozesses ausgeführt wird.

Parallele Ausführung in .NET Framework

Beschreibt das Ausführen mehrerer Versionen einer Anwendung, einer Komponente oder der Laufzeit.

In .NET Framework 4 und 4.5 hinzugefügte CLR-Hostingschnittstellen

Beschreibt die nicht verwalteten Schnittstellen zum Hosten der Laufzeit in .NET Framework, Version 4.

CLR-Hostingschnittstellen

Beschreibt die nicht verwalteten Schnittstellen zum Hosten der Laufzeit in .NET Framework, Version 2.0.

Zurück nach oben

Verweis

System.AppDomainManager

Zurück nach oben