Partager via


Activation de compléments

Mise à jour : novembre 2007

Une fois que vous avez utilisé les méthodes de découverte et obtenu une collection de jetons de compléments pour une vue hôte spécifiée, vous pouvez activer un complément à partir de la collection en utilisant son jeton qui est représenté par un objet AddInToken. Pour plus d'informations sur la méthode à suivre pour découvrir des compléments disponibles sur votre système, consultez Découverte de compléments.

Lorsque vous utilisez les surcharges de méthode Activate sur un objet AddInToken, vous pouvez spécifier les options d'activation suivantes :

  • le domaine d'application dans lequel le complément est chargé ;

  • le niveau de confiance de la sécurité ou le jeu d'autorisations accordé au domaine d'application créé pour le complément ;

  • le processus externe dans lequel activer le complément. Il s'agit d'une option de développement de complément avancée.

La méthode Activate retourne la vue hôte du complément et l'application hôte peut ensuite appeler des méthodes comme cela est défini dans le contrat. L'application hôte peut contrôler la vie du complément en l'arrêtant avec la classe AddInController. Elle peut également laisser le garbage collector récupérer le complément lorsqu'il n'est plus référencé.

Activation

En général, les applications hôte exécutent l'hôte et le complément dans des domaines d'application distincts, à raison d'un domaine d'application par complément. Cela permet aux compléments de fonctionner dans des contextes isolés de l'hôte et des autres compléments. Cette isolation empêche les conflits et active le versioning des compléments.

Puisque le complément est dans son propre domaine d'application, vous pouvez le tester dans son propre environnement et également tester son côté du pipeline. Les segments de pipeline de la vue de l'adaptateur du complément, du contrat et du complément sont chargés dans le même domaine d'application que le complément. Tous les autres assemblys requis par le complément sont également chargés dans le domaine d'application du complément.

Lors de l'activation de compléments, l'application hôte utilise habituellement la surcharge de méthode Activate qui prend un niveau de sécurité spécifié et crée automatiquement un domaine d'application pour le complément. Vous pouvez spécifier un AddInSecurityLevel ou un PermissionSet pour le niveau de sécurité. Lorsque la méthode Activate crée un domaine d'application pour le complément, elle donne au fichier de configuration du domaine d'application le nom addinassemblyname.config, si ce fichier de configuration existe.

Afin de mieux contrôler ou regrouper des compléments, vous pouvez utiliser des surcharges de la méthode Activate dans le but de spécifier un domaine d'application existant pour charger des compléments. Si vous spécifiez un domaine d'application existant, vous pouvez partager facilement des ressources, des contextes de sécurité et des informations de culture avec d'autres compléments.

Vous devez déterminer le contexte de sécurité qui sera appliqué au domaine d'application du complément. Par exemple, une application hôte peut s'exécuter en confiance totale, mais risque de devoir exécuter des compléments avec moins d'autorisations. Vous pouvez utiliser des surcharges de la méthode Activate pour spécifier une zone de sécurité avec l'énumération AddInSecurityLevel. Parmi ces zones de sécurité, on compte FullTrust, Host, Intranet, ou Internet. Les autorisations appropriées pour la zone de sécurité sont appliquées au code exécuté dans le domaine d'application. Les autorisations disponibles pour ces zones de sécurité dépendent des paramètres de sécurité du .NET Framework.

Si vous ne souhaitez pas utiliser d'autorisations pour une zone de sécurité, vous pouvez utiliser des surcharges de la méthode Activate pour fournir votre propre objet PermissionSet.

Vous pouvez utiliser des surcharges de la méthode Activate pour créer un processus externe pour le complément ou pour joindre le complément à un processus externe existant créé pour héberger des compléments. Ces surcharges utilisent les classes AddInProcess et AddInEnvironment. Pour plus d'informations sur l'activation de compléments dans un processus externe, consultez Comment : activer des compléments avec différents niveaux d'isolement et de sécurité.

Contrôle de la durée de vie d'un complément

La classe AddInController fournit des méthodes pour les tâches complémentaires suivantes :

  • arrêter le complément ;

  • obtenir le domaine d'application du complément ;

  • obtenir un jeton du complément pour une activation ultérieure ;

  • obtenir un objet AddInEnvironment pour l'utiliser avec une activation de processus externe ;

utiliser la méthode GetAddInController pour obtenir le contrôleur d'un complément spécifié.

La méthode Shutdown gère les détails nécessaires pour arrêter un complément. Il faut donc savoir où le complément est chargé, connaître son domaine d'application et éventuellement les processus externes dans lesquels le complément est exécuté. Si le domaine d'application a été créé automatiquement, cette méthode décharge ce domaine d'application. Si le complément a été activé dans un domaine d'application spécifié, le délai du service de durée de vie sur l'objet de contrat distant sera dépassé, laissant ainsi le domaine d'application chargé. Lorsque l'objet de contrat sera supprimé, le complément pourra être récupéré par le garbage collection.

Exemple

L'exemple suivant active un complément avec un niveau de sécurité spécifié dans un domaine d'application créé automatiquement.

'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);

Voir aussi

Tâches

Comment : activer des compléments avec différents niveaux d'isolement et de sécurité

Concepts

Découverte de compléments

Gestion de la durée de vie

Contrats, vues et adaptateurs

Autres ressources

Compléments et extensibilité