Pipeline-Entwicklung
Aktualisiert: November 2007
Die Add-In-Pipeline ist der Pfad von Pipelinesegmenten, die die Hostanwendung und deren Add-In verwenden müssen, um miteinander zu kommunizieren.
In der folgenden Abbildung wird die Kommunikationspipeline mit den zugehörigen Segmenten dargestellt.
Add-In-Pipeline
Die Hostanwendung befindet sich am einen Ende der Pipeline und das Add-In am anderen Ende. Von jedem Ende aus in Richtung Mitte haben sowohl die Hostanwendung als auch das Add-In eine abstrakte Basisklasse, die eine Ansicht des gemeinsam genutzten Objektmodells definiert. Diese Typen (Klassen) bilden das Pipelinesegment der Add-In-Ansicht und die Hostansicht des Add-In-Pipelinesegments. Das Pipelinesegment der Add-In-Ansicht enthält häufig mehrere abstrakte Klassen, die Klasse, aus der das Add-In geerbt wird, wird jedoch als Add-In-Basis bezeichnet.
Das Pipelinesegment des Add-In-seitigen Adapters und das Pipelinesegment des hostseitigen Adapters konvertieren den Fluss von Typen zwischen den Ansichtspipelinesegmenten und dem Vertragspipelinesegment. Das zentrale Segment der Pipeline ist ein Vertrag, der von der IContract-Schnittstelle abgeleitet wird. Dieser Vertrag definiert die Methoden, die von der Hostanwendung und deren Add-In verwendet werden.
Wenn Sie den Host und das Add-In in separate Anwendungsdomänen laden, verfügen Sie über eine Isolationsgrenze, die den Gültigkeitsbereich der Hostanwendung vom Gültigkeitsbereich des Add-Ins trennt. Der Vertrag ist die einzige Assembly, die sowohl in die Hostanwendungsdomäne als auch in die Add-In-Anwendungsdomäne geladen wird. Der Host und das Add-In verweisen jeweils nur auf ihre Ansicht der Vertragsmethoden. Deshalb werden sie durch eine Abstraktionsebene vom Vertrag getrennt.
Um Pipelinesegmente zu entwickeln, müssen Sie eine Verzeichnisstruktur erstellen, die sie enthält. Weitere Informationen über Entwicklungsanforderungen und Richtlinien zum Gültigkeitsbereich finden Sie unter Anforderungen für die Pipelineentwicklung.
In der folgenden Abbildung sind die Typen dargestellt, aus denen die Pipelinesegmente bestehen. Die in der Abbildung dargestellten Namen der Typen sind willkürlich, jedoch erfordern mit Ausnahme des Hosts und der Hostansicht des Add-Ins alle Typen Attribute, sodass sie mit Methoden erkannt werden können, die einen Informationsspeicher erstellen.
Add-In-Pipeline mit Typen
In der folgenden Tabelle werden die Pipelinesegmente zum Aktivieren eines Add-Ins beschrieben. Weitere Informationen zu diesen Segmenten finden Sie unter Verträge, Ansichten und Adapter.
Pipelinesegment |
Beschreibung |
---|---|
Host |
Die Anwendungsassembly, die eine Instanz eines Add-Ins erstellt. |
Hostansicht des Add-Ins |
Stellt die Ansicht der Hostanwendung der Objekttypen und Methoden dar, die verwendet werden, um mit dem Add-In zu kommunizieren. Die Hostansicht ist eine abstrakte Basisklasse oder eine Schnittstelle. |
Hostseitiger Adapter |
Eine Assembly mit einer oder mehreren Klassen, die Methoden in und aus dem Vertrag anpassen. Dieses Pipelinesegment wird mit dem HostAdapterAttribute-Attribut identifiziert. Assemblys mit mehreren Modulen werden nicht unterstützt. |
Vertrag |
Eine Schnittstelle, die von der IContract-Schnittstelle abgeleitet wird und das Protokoll für die Kommunikation von Typen zwischen dem Host und dessen Add-In definiert. Dieses Pipelinesegment wird durch Festlegen des AddInContractAttribute-Attributs identifiziert. |
Add-In-seitiger Adapter |
Eine Assembly mit einer oder mehreren Klassen, die Methoden in und aus dem Vertrag anpassen. Dieses Pipelinesegment wird mit dem AddInAdapterAttribute-Attribut identifiziert. Jede Assembly im Add-In-seitigen Adapterverzeichnis, die einen Typ mit einem AddInAdapterAttribute-Attribut enthält, wird in die Anwendungsdomäne des Add-Ins geladen. Jede Assembly im Add-In-seitigen Verzeichnis wird in ihre eigene Anwendungsdomäne geladen. Assemblys mit mehreren Modulen werden nicht unterstützt. |
Add-In-Ansicht |
Eine Assembly, die die Ansicht des Add-Ins der Objekttypen und Methoden darstellt, die verwendet werden, um mit dem Host zu kommunizieren. Die Add-In-Ansicht ist eine abstrakte Basisklasse oder eine Schnittstelle. Dieses Pipelinesegment wird mit dem AddInBaseAttribute-Attribut identifiziert. Jede Assembly im Verzeichnis AddInViews, die einen Typ mit einem AddInBaseAttribute-Attribut enthält, wird in die Anwendungsdomäne des Add-Ins geladen. |
Add-In |
Ein instanziierter Typ, der einen Dienst für den Host ausführt. |
Pipelineaktivierungspfad
In der folgenden Abbildung ist die Aktivierung von Typen dargestellt, wenn ein Add-In aktiviert wird. Außerdem wird die Übergabe von Objekten, wie z. B. die Ergebnisse einer Berechnung oder eine Auflistung von Objekten, an den Host dargestellt. Dies ist das häufigste Szenario.
Aktivierungspfad vom Add-In zum Host
Der Aktivierungspfad der Pipeline verläuft wie folgt:
Die Hostanwendung aktiviert das Add-In mit der Activate-Methode.
Das Add-In, die Add-In-Ansicht, der Add-In-seitige Adapter und die Vertragsassemblys werden in die Anwendungsdomäne des Add-Ins geladen.
Eine Instanz des Add-In-seitigen Adapters wird mit der Add-In-Ansicht (die Klasse wird durch das AddInBaseAttribute-Attribut identifiziert) als Konstruktor erstellt. Der Add-In-seitige Adapter erbt vom Vertrag.
Der Add-In-seitige Adapter, der als der Vertrag typisiert wird, wird über die (optionale) Isolationsgrenze an den Konstruktor des hostseitigen Adapters übergeben.
Die Hostansicht des Add-Ins, hostseitige Adapter und die Vertragsassemblys werden in die Anwendungsdomäne des Hosts geladen.
Eine Instanz des hostseitigen Adapters wird mit dem Vertrag als Konstruktor erstellt. Der hostseitige Adapter erbt von der Hostansicht des Add-Ins.
Der Host verfügt über das Add-In, das als die Hostansicht des Add-Ins typisiert wird, und kann mit dem Aufrufen der Methoden fortfahren.
Exemplarische Vorgehensweisen
Es gibt drei exemplarische Vorgehensweisen, die beschreiben, wie Pipelines mit Visual Studio erstellt werden:
Exemplarische Vorgehensweise: Erstellen von erweiterbaren Anwendungen
Beschreibt ein Rechner-Add-In, das Additions-, Subtraktions-, Multiplikations- und Divisionsberechnungen für den Host ausführt.
Exemplarische Vorgehensweise: Aktivieren der Abwärtskompatibilität bei geändertem Host
Beschreibt ein Rechner-Add-In mit erweiterten Berechnungsfunktionen und erläutert, wie die Kompatibilität mit dem ersten Rechner-Add-In gewährleistet wird.
Exemplarische Vorgehensweise: Übergeben von Auflistungen zwischen Hosts und Add-Ins
Beschreibt, wie Datenauflistungen mit einem Buchhandlungsszenario über die Pipeline übergeben werden.