Übersicht über Add-Ins

Aktualisiert: November 2007

Das .NET Framework-Programmiermodell für Add-Ins unterstützt die Entwicklung einer Kommunikationspipeline, die das Hosting von Add-Ins in zahlreichen anpassungsfähigen Szenarios ermöglicht.

Hinweis:

Zusätzlichen Beispielcode und Community Technology Previews von Tools für die Erstellung von Add-In-Pipelines finden Sie auf der Managed Extensibility and Add-In Framework-Website auf CodePlex.

Add-In-Modell

Das Add-In-Modell besteht aus einer Reihe von Segmenten, die die Add-In-Pipeline (wird auch als Kommunikationspipeline bezeichnet) bilden, die für die gesamte Kommunikation zwischen dem Add-In und dem Host verantwortlich ist. Die Pipeline ist ein symmetrisches Kommunikationsmodell aus Segmenten, die Daten zwischen einem Add-In und dessen Host austauschen. Die Entwicklung dieser Segmente zwischen dem Host und dem Add-In stellt die erforderlichen Abstraktionsebenen bereit, die die Versionsverwaltung und Isolation des Add-Ins unterstützen.

Die folgende Abbildung zeigt die Pipeline.

Add-In-Pipeline

Die Assemblys für diese Segmente müssen sich nicht in derselben Anwendungsdomäne befinden. Sie können ein Add-In in seine eigene neue Anwendungsdomäne, in eine vorhandene Anwendungsdomäne oder sogar in die Anwendungsdomäne des Hosts laden. Sie können mehrere Add-Ins in dieselbe Anwendungsdomäne laden. Dadurch können die Add-Ins Ressourcen und Sicherheitskontexte gemeinsam nutzen.

Das Add-In-Modell unterstützt und empfiehlt eine optionale Grenze zwischen dem Host und dem Add-In, die als Isolationsgrenze bezeichnet wird (auch unter der Bezeichnung Remotegrenze bekannt). Diese Grenze kann eine Anwendungsdomänen- oder Prozessgrenze sein.

Das Vertragssegment in der Mitte der Pipeline wird in die Anwendungsdomäne des Hosts und in die Anwendungsdomäne des Add-Ins geladen. Der Vertrag definiert die virtuellen Methoden, mit denen der Host und das Add-In Typen austauschen.

Um die Isolationsgrenze zu überwinden, müssen Typen entweder Verträge oder serialisierbare Typen sein. Typen, die weder Verträge noch serialisierbare Typen sind, müssen von den Adaptersegmenten in der Pipeline konvertiert werden.

Die Ansichtssegmente der Pipeline sind abstrakte Basisklassen oder Schnittstellen, die dem Host und dem Add-In eine Ansicht der gemäß der Definition im Vertrag gemeinsam genutzten Methoden bereitstellen.

Weitere Informationen zum Entwickeln von Pipelinesegmenten finden Sie unter Pipeline-Entwicklung.

In den folgenden Abschnitten werden die Funktionen des Add-In-Modells erläutert.

Unabhängige Versionsverwaltung

Das Add-In-Modell ermöglicht Hosts und Add-Ins die unabhängige Versionsverwaltung. Dadurch ermöglicht das Add-In-Modell die folgenden Szenarios:

  • Erstellen eines Adapters, mit dem ein Host ein Add-In verwenden kann, das für eine vorherige Hostversion entwickelt wurde.

  • Erstellen eines Adapters, mit dem ein Host ein Add-In verwenden kann, das für eine neuere Hostversion entwickelt wurde.

  • Erstellen eines Adapters, mit dem ein Host Add-Ins verwenden kann, die für einen anderen Host entwickelt wurden.

Ermittlung und Aktivierung

Sie können ein Add-In aktivieren, indem Sie einen Token aus einer Auflistung verwenden, die die in einem Informationsspeicher gefundenen Add-Ins darstellt. Add-Ins werden anhand des Typs gesucht, der die Hostansicht des Add-Ins definiert. Sie können auch ein bestimmtes Add-In anhand des Typs suchen, der das Add-In definiert. Der Informationsspeicher besteht aus zwei Cachedateien: dem Pipelinespeicher und dem Add-In-Speicher.

Informationen zum Aktualisieren und Neuerstellen des Informationsspeichers finden Sie unter Ermitteln von Add-Ins. Informationen zum Aktivieren von Add-Ins finden Sie unter Add-In-Aktivierung und Gewusst wie: Aktivieren von Add-Ins mit unterschiedlichen Isolations- und Sicherheitsstufen.

Isolationsstufen und externe Prozesse

Das Add-In-Modell unterstützt mehrere Isolationsstufen zwischen einem Add-In und seinem Host oder zwischen Add-Ins. Folgende Stufen werden unterstützt, beginnend bei der Stufe mit der niedrigsten Isolation:

  • Das Add-In wird in derselben Anwendungsdomäne ausgeführt wie der Host. Dies ist nicht empfehlenswert, da Sie die Isolations- und Entladefunktionen verlieren, über die Sie verfügen, wenn Sie unterschiedliche Anwendungsdomänen verwenden.

  • Mehrere Add-Ins werden in dieselbe Anwendungsdomäne geladen, die sich von der vom Host verwendeten Anwendungsdomäne unterscheidet.

  • Jedes Add-In wird ausschließlich in seine eigene Anwendungsdomäne geladen. Dies ist die am häufigsten verwendete Isolationsstufe.

  • Mehrere Add-Ins werden in dieselbe Anwendungsdomäne in einem externen Prozess geladen.

  • Jedes Add-In wird ausschließlich in seine eigene Anwendungsdomäne in einem externen Prozess geladen. Dies ist das Szenario mit der stärksten Isolation.

Weitere Informationen über die Verwendung externer Prozesse finden Sie unter Gewusst wie: Aktivieren von Add-Ins mit unterschiedlichen Isolations- und Sicherheitsstufen.

Verwaltung der Lebensdauer

Da das Add-In-Modell Anwendungsdomänen- und Prozessgrenzen überschreitet, reicht die Garbage Collection nicht aus, um Objekte freizugeben. Das Add-In-Modell bietet einen Mechanismus zur Verwaltung der Lebensdauer, der Token und Referenzzähler verwendet und in der Regel keine zusätzliche Programmierung erfordert. Weitere Informationen finden Sie unter Verwaltung der Lebensdauer.

Unterscheiden zwischen Add-Ins und Hosts

Der Unterschied zwischen einem Add-In und einem Host besteht darin, dass der Host das Element ist, das das Add-In aktiviert. Der Host kann das größere der beiden Elemente, wie z. B. eine Textverarbeitungsanwendung mit ihren Rechtschreibprüfungen, oder das kleinere der beiden Elemente sein, wie z. B. ein Instant Messaging-Client mit einem eingebetteten Media Player. Das Add-In-Modell unterstützt Add-Ins sowohl in Client- als auch in Serverszenarios. Beispiele für Server-Add-Ins sind Add-Ins, die Virenschutz, Spamfilter und IP-Schutz für Mailserver bereitstellen. Beispiele für Client-Add-Ins umfassen Referenz-Add-Ins für Textverarbeitungsprogramme, spezielle Funktionen für Grafikprogramme und Spiele sowie Virenschutz für lokale E-Mail-Clients.

Siehe auch

Konzepte

Anwendungsdomänen und Assemblys

Weitere Ressourcen

Add-Ins und Erweiterbarkeit