Compléments et extensibilité

Les compléments fournissent des fonctionnalités ou des services étendus à une application hôte. Le .NET Framework fournit un modèle de programmation que les développeurs peuvent utiliser pour développer des compléments et les activer dans leur application hôte. Le modèle y parvient en construisant un pipeline de communication entre l'hôte et le complément. Le modèle est implémenté à l'aide des types des espaces de noms System.AddIn, System.AddIn.Hosting, System.AddIn.Pipeline et System.AddIn.Contract.

Cette vue d'ensemble contient les sections suivantes :

  • Modèle de complément

  • Distinction entre les compléments et les hôtes

  • Rubriques connexes

  • Référence

RemarqueRemarque

Vous trouverez des exemples de code supplémentaires, ainsi que des présentations technologiques destinées aux clients des outils de génération de pipelines de compléments, sur le site Managed Extensibility and Add-In Framework (en anglais) de CodePlex.

Modèle de complément

Le modèle de complément se compose d'une série de segments qui constituent le pipeline du complément (également appelé pipeline de communication), qui est responsable de toutes les communications entre le complément et l'hôte. Le pipeline est un modèle de communication symétrique des segments qui échangent des données entre un complément et son hôte. Le développement de ces segments entre l'hôte et le complément fournit les couches d'abstraction requises qui prennent en charge le versioning et l'isolation du complément.

L'illustration suivante représente le pipeline.

Pipeline de complément

Modèle de pipeline de complément.

Il n'est pas nécessaire que ces segments soient dans le même domaine d'application. Vous pouvez charger un complément dans son nouveau domaine d'application, dans un domaine d'application existant ou même dans le domaine d'application de l'hôte. Vous pouvez charger plusieurs compléments dans le même domaine d'application, ce qui permet aux compléments de partager des ressources et des contextes de sécurité.

Le modèle de complément prend en charge et recommande une limite facultative entre l'hôte et le complément, appelée limite d'isolation (ou limite de communication à distance). Cette limite peut être un domaine d'application ou une limite de processus.

Le segment de contrat au milieu du pipeline est chargé dans le domaine d'application de l'hôte et dans le domaine d'application du complément. Le contrat définit les méthodes virtuelles que l'hôte et le complément utilisent pour échanger des types.

Pour passer à travers la limite d'isolation, les types doivent être des contrats ou des types sérialisables. Les types qui ne sont pas contrats ou des types sérialisables doivent être convertis en contrats par les segments d'adaptateur dans le pipeline.

Les segments de vue du pipeline sont des classes de base abstraites ou des interfaces qui fournissent à l'hôte et au complément une vue des méthodes qu'ils partagent, comme défini par le contrat.

Pour plus d'informations sur le développement de segments de pipeline, consultez Développement de pipeline.

Les sections suivantes décrivent les fonctionnalités du modèle de complément.

Versioning indépendant

Le modèle de complément permet aux hôtes et aux compléments d'effectuer un versioning indépendant. En conséquence, le modèle de complément permet les scénarios suivants :

  • Création d'un adaptateur qui permet à un hôte d'utiliser un complément créé pour une version antérieure de l'hôte.

  • Création d'un adaptateur qui permet à un hôte d'utiliser un complément créé pour une version ultérieure de l'hôte.

  • Création d'un adaptateur qui permet à un hôte d'utiliser des compléments construits pour un hôte différent.

Découverte et activation

Vous pouvez activer un complément en utilisant un jeton d'une collection qui représente les compléments recherchés dans une banque d'informations. La recherche des compléments s'effectue en recherchant le type qui définit la vue de l'hôte du complément. Vous pouvez également rechercher un complément spécifique selon le type qui définit le complément. La banque d'informations se compose de deux fichiers cache : le magasin de pipeline et le magasin de complément.

Pour plus d'informations sur la mise à jour et la régénération de la banque d'informations, consultez Découverte de compléments. Pour plus d'informations sur l'activation des compléments, consultez Activation de compléments et Comment : activer des compléments avec différents niveaux d'isolement et de sécurité.

Niveaux d'isolement et processus externes

Le modèle de complément prend en charge plusieurs niveaux d'isolement entre un complément et son hôte ou entre compléments. Voici les niveaux d'isolation, du moins élevé au plus élevé :

  • Le complément s'exécute dans le même domaine d'application que l'hôte. Ce niveau n'est pas recommandé, car vous perdez les fonctions d'isolation et de déchargement que vous obtenez lorsque vous utilisez différents domaines d'application.

  • Plusieurs compléments sont chargés dans le même domaine d'application qui est différent du domaine d'application utilisé par l'hôte.

  • Chaque complément est chargé exclusivement dans son propre domaine d'application. Il s'agit du niveau d'isolement le plus courant.

  • Plusieurs compléments sont chargés dans le même domaine d'application dans un processus externe.

  • Chaque complément est chargé exclusivement dans son propre domaine d'application dans un processus externe. Il s'agit du scénario le plus isolé.

Pour plus d'informations sur l'utilisation de processus externes, consultez Comment : activer des compléments avec différents niveaux d'isolement et de sécurité.

Gestion de la durée de vie

Étant donné que le modèle de complément couvre les limites de domaine d'application et de processus, le garbage collection seul ne suffit pas pour libérer et récupérer des objets. Le modèle de complément fournit un mécanisme de gestion de la durée de vie qui utilise des jetons et un décompte de références et ne requiert généralement pas de programmation supplémentaire. Pour plus d'informations, consultez Gestion de la durée de vie.

Retour au début

Distinction entre les compléments et les hôtes

La différence entre un complément et un hôte est que l'hôte est celui qui active le complément. L'hôte peut être le plus grand des deux (par exemple, une application de traitement de texte et ses vérificateurs orthographiques) ou le plus petit (par exemple, un client de messagerie instantanée qui incorpore un lecteur multimédia). Le modèle de complément prend en charge les compléments dans les scénarios client et serveur. Les compléments de serveur incluent, par exemple, des compléments qui fournissent des serveurs de messagerie avec une analyse de virus, des filtres de courrier indésirable et une protection IP. Les compléments de client incluent, par exemple, des compléments de référence pour les applications de traitement de texte, des fonctionnalités spécialisées pour les programmes graphiques et les jeux, et une analyse de virus pour les clients de messagerie locaux.

Retour au début

Rubriques connexes

Titre

Description

Développement de pipeline

Décrit le pipeline de communication de segments de l'application hôte au complément. Fournit des exemples de code dans des rubriques de procédures pas à pas qui décrivent comment construire le pipeline et déployer des segments vers le pipeline dans Visual Studio.

Découverte de compléments

Décrit la façon dont vous pouvez provoquer la détection des compléments par les applications hôte.

Activation de compléments

Décrit comment activer et désactiver des compléments.

Performances des compléments

Décrit comment utiliser le chargement d'assembly indépendant du domaine et les images natives pour améliorer la performance des compléments.

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

Décrit comment activer des compléments dans divers domaines d'application, processus et scénarios de niveaux de sécurité.

Comment : utiliser des données de qualification

Décrit comment appliquer des données personnalisées attribuées aux compléments et aux segments de pipeline, et comment y accéder.

Rôle du développeur de compléments

Décrit comment développer un complément pour utiliser les segments requis du pipeline de complément.

Domaines d'application et assemblys

Décrit la relation entre les domaines d'application, lesquels fournissent une limite d'isolation pour la sécurité, la fiabilité et le contrôle de version, et les assemblys.

Retour au début

Référence

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

Retour au début