Add-In-Aktivierung

Nachdem Sie die Ermittlungsmethoden verwendet und eine Auflistung von Add-In-Token für eine bestimmte Hostansicht erhalten haben, können Sie ein Add-In aus der Auflistung unter Verwendung des zugehörigen Tokens aktivieren, das durch ein AddInToken-Objekt dargestellt wird. Weitere Informationen zum Ermitteln der auf Ihrem System verfügbaren Add-Ins finden Sie unter Ermitteln von Add-Ins.

Wenn Sie die Activate-Methodenüberladungen für ein AddInToken-Objekt verwenden, können Sie die folgenden Aktivierungsoptionen festlegen:

  • Die Anwendungsdomäne, in die das Add-In geladen wird.

  • Die Sicherheitsvertrauensebene bzw. den Berechtigungssatz, die bzw. der der für das Add-In erstellten Anwendungsdomäne gewährt wird.

  • Den externen Prozess, in dem das Add-In aktiviert werden soll. Dies ist eine erweiterte Option für die Add-In-Entwicklung.

Die Activate-Methode gibt die Hostansicht des Add-Ins zurück, und die Hostanwendung kann anschließend wie im Vertrag definiert die Methoden aufrufen. Die Hostanwendung kann die Lebensdauer des Add-Ins steuern, indem es mithilfe der AddInController-Klasse beendet wird. Das Add-In kann auch vom Garbage Collector freigegeben werden, wenn nicht mehr darauf verwiesen wird.

Aktivierung

Normalerweise führen Hostanwendungen Host und Add-In in getrennten Anwendungsdomänen mit einer Anwendungsdomäne pro Add-In aus. Dadurch können Add-Ins in Kontexten ausgeführt werden, die sowohl vom Host als auch von anderen Add-Ins isoliert sind. Diese Isolation verhindert Konflikte und ermöglicht die Verwaltung der Add-In-Versionen.

Da sich das Add-In in einer eigenen Anwendungsdomäne befindet, können Sie nicht nur das Add-In in der eigenen Umgebung, sondern auch die Add-In-Seite der Pipeline testen. Die Pipelinesegmente für Add-In-Adapter, Vertrag und Add-In-Ansicht werden in dieselbe Anwendungsdomäne wie das Add-In geladen. Alle weiteren für das Add-In erforderlichen Assemblys werden ebenfalls in die Anwendungsdomäne des Add-Ins geladen.

Bei der Aktivierung von Add-Ins verwendet die Hostanwendung üblicherweise die Activate-Methodenüberladung, die eine festgelegte Sicherheitsebene verwendet und automatisch eine Anwendungsdomäne für das Add-In erstellt. Sie können ein AddInSecurityLevel oder PermissionSet für die Sicherheitsebene festlegen. Wenn die Activate-Methode eine Anwendungsdomäne für das Add-In erstellt, wird die Konfigurationsdatei der Anwendungsdomäne auf addinassemblyname.config festgelegt, sofern diese Konfigurationsdatei vorhanden ist.

Um eine genauere Kontrolle zu erzielen oder Add-Ins in einem Pool zusammenzufassen, können Sie Überladungen der AddInToken.Activate-Methode verwenden und eine vorhandene Anwendungsdomäne zum Laden von Add-Ins festlegen. Bei Angabe einer vorhandenen Anwendungsdomäne können schnell und einfach Ressourcen, Sicherheitskontexte und Kulturinformationen mit anderen Add-Ins gemeinsam genutzt werden.

Sie sollten berücksichtigen, welcher Sicherheitskontext auf die Anwendungsdomäne des Add-Ins angewendet wird. Eine Hostanwendung kann beispielsweise mit voller Vertrauenswürdigkeit ausgeführt werden, während sie u. U. Add-Ins mit eingeschränkteren Berechtigungen ausführen muss. Sie können Überladungen der Activate-Methode verwenden, um mithilfe der AddInSecurityLevel-Enumeration eine Sicherheitszone festzulegen. Diese Sicherheitszonen umfassen FullTrust, Host, Intranet oder Internet. Die entsprechenden Berechtigungen für die Sicherheitszone werden auf den Code angewendet, der in der Anwendungsdomäne ausgeführt wird. Welche Berechtigungen für diese Sicherheitszonen verfügbar sind, hängt von den vorhandenen .NET Framework-Sicherheitseinstellungen ab.

Wenn Sie keine Berechtigungen für eine Sicherheitszone verwenden möchten, können Sie mit Überladungen der Activate-Methode ein eigenes PermissionSet-Objekt bereitstellen.

Sie können Überladungen der Activate-Methode verwenden, um einen externen Prozess für das Add-In zu erstellen oder um das Add-In an einen bereits vorhandenen externen Prozess anzufügen, der als Host für Add-Ins erstellt wurde. Diese Überladungen verwenden die AddInProcess-Klasse und die AddInEnvironment-Klasse. Weitere Informationen über das Aktivieren von Add-Ins in einem externen Prozess finden Sie unter Gewusst wie: Aktivieren von Add-Ins mit unterschiedlicher Isolation und Sicherheit.

Steuern der Lebensdauer von Add-Ins

Die AddInController-Klasse stellt Methoden für die folgenden Add-In-Aufgaben bereit:

  • Beenden des Add-Ins

  • Abrufen der Anwendungsdomäne des Add-Ins

  • Abrufen eines Add-In-Tokens für die zukünftige Aktivierung

  • Abrufen eines AddInEnvironment-Objekts für die Verwendung mit externer Prozessaktivierung.

Verwenden der GetAddInController-Methode zum Abrufen des Controllers für ein angegebenes Add-In

Die Shutdown-Methode behandelt die Details, die zum Beenden eines Add-Ins erforderlich sind. Hierzu gehört zu wissen, wo das Add-In geladen wird, wie die Anwendungsdomäne lautet und ggf. in welchen externen Prozessen das Add-In ausgeführt wird. Wenn die Anwendungsdomäne automatisch erstellt wurde, entlädt diese Methode diese Anwendungsdomäne. Wenn das Add-In in einer bestimmten Anwendungsdomäne aktiviert wurde, verursacht der Lebensdauerdienst für das Remoteobjekt des Vertrags ein Timeout, wodurch die Anwendungsdomäne geladen bleibt. Wenn das Vertragsobjekt verworfen wird, ist das Add-In für die Freigabe durch die Garbage Collection verfügbar.

Beispiel

Im folgenden Beispiel wird ein Add-In mit einer festgelegten Sicherheitsebene in einer automatisch erstellten Anwendungsdomäne aktiviert.

'Ask the user which add-in they would like to use.
Dim selectedToken As AddInToken = ChooseAddIn(tokens)
'Activate the selected AddInToken in a new
'application domain with the Internet trust level.
Dim CalcAddIn As Calculator = selectedToken.Activate(Of Calculator)(AddInSecurityLevel.Internet)
'Run the add-in using a custom method.
RunCalculator(CalcAddIn)
//Ask the user which add-in they would like to use.
AddInToken selectedToken = ChooseAddIn(tokens);

//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);

//Run the add-in using a custom method.
RunCalculator(CalcAddIn);

Siehe auch

Aufgaben

Gewusst wie: Aktivieren von Add-Ins mit unterschiedlicher Isolation und Sicherheit

Konzepte

Ermitteln von Add-Ins

Verwaltung der Lebensdauer

Verträge, Ansichten und Adapter

Weitere Ressourcen

Add-Ins und Erweiterbarkeit