Partager via


Développement de pipeline

Le pipeline de complément est le chemin des segments de pipeline que l'application hôte et son complément doivent utiliser pour communiquer.

L'illustration suivante montre le pipeline de communication et ses segments.

Pipeline de complément

Modèle de pipeline de complément.

L'application hôte est à une extrémité du pipeline et le complément est à l'autre extrémité. Partant de chaque extrémité et se déplaçant vers le milieu, l'application hôte et le complément disposent d'une classe de base abstraite qui définit une vue du modèle objet qu'ils partagent. Ces types (classes) constituent le segment de pipeline de la vue du complément et la vue hôte du segment de pipeline du complément. Le segment de pipeline de la vue du complément contient souvent plusieurs classes abstraites, mais la classe dont le complément hérite est appelée base du complément.

Le segment d'adaptateur côté complément du pipeline et le segment d'adaptateur côté hôte du pipeline convertissent le flux de types entre leurs segments de pipeline de la vue et le segment de pipeline du contrat. Le segment central du pipeline est un contrat dérivé de l'interface IContract. Ce contrat définit les méthodes que l'application hôte et son complément utiliseront.

Si vous chargez l'hôte et le complément dans des domaines d'application distincts, vous obtenez une limite d'isolement qui sépare la portée de l'application hôte de la portée du complément. Le contrat est le seul assembly chargé aussi bien dans le domaine d'application hôte que dans le domaine d'application du complément. L'hôte et le complément font référence uniquement à leur vue des méthodes de contrat. Par conséquent, ils sont séparés du contrat par une couche d'abstraction.

Pour développer des segments de pipeline, vous devez créer une structure de répertoires qui les contiendra. Pour plus d'informations sur les spécifications de développement et les indications de portée, consultez Spécifications du développement de pipelines.

L'illustration suivante montre les types qui constituent les segments de pipeline. Les noms de types affichés dans l'illustration sont arbitraires, mais tous les types, à l'exception de l'hôte et de la vue hôte du complément, requièrent des attributs pour être découverts par les méthodes qui génèrent une banque d'informations.

Pipeline de complément avec types

Modèle de complément avec attributs requis sur les types.

Le tableau suivant décrit les segments de pipeline permettant d'activer un complément. Pour plus d'informations sur ces segments, consultez Contrats, vues et adaptateurs.

Segment de pipeline

Description

Hôte

Assembly d'application qui crée une instance d'un complément.

Vue hôte du complément

Représente la vue de l'application hôte des types d'objets et méthodes utilisés pour communiquer avec le complément. La vue hôte est une interface ou classe de base abstraite.

Adaptateur côté hôte

Assembly avec une ou plusieurs classes qui adapte des méthodes au contrat et à partir du contrat.

Ce segment de pipeline est identifié en utilisant l'attribut HostAdapterAttribute.

Les assemblys composés de plusieurs modules ne sont pas pris en charge.

Contrat

Interface dérivée de l'interface IContract et définissant le protocole permettant de communiquer des types entre l'hôte et son complément.

Ce segment de pipeline est identifié en définissant l'attribut AddInContractAttribute.

Adaptateur côté complément

Assembly avec une ou plusieurs classes qui adapte des méthodes au contrat et à partir du contrat.

Ce segment de pipeline est identifié en utilisant l'attribut AddInAdapterAttribute.

Chaque assembly du répertoire de l'adaptateur côté complément qui contient un type disposant d'un attribut AddInAdapterAttribute est chargé dans le domaine d'application du complément.

Chaque assembly du répertoire côté complément est chargé dans son propre domaine d'application.

Les assemblys composés de plusieurs modules ne sont pas pris en charge.

Vue de complément

Assembly qui représente la vue du complément des types d'objet et méthodes utilisés pour communiquer avec l'hôte. La vue de complément est une interface ou classe de base abstraite.

Ce segment de pipeline est identifié en utilisant l'attribut AddInBaseAttribute.

Chaque assembly du répertoire AddInViews qui contient un type disposant d'un attribut AddInBaseAttribute est chargé dans le domaine d'application du complément.

Complément

Type instancié qui exécute un service pour l'hôte.

Chemin d'activation du pipeline

L'illustration suivante présente l'activation de types lorsqu'un complément est activé. Elle montre également le passage d'objets à l'hôte, comme les résultats d'un calcul ou une collection d'objets. Il s'agit du scénario le plus typique.

Chemin d'activation du complément à l'hôte

Modèle de complément avec chemin d'accès d'activation.

Le chemin d'activation du pipeline se présente comme suit :

  1. L'application hôte active le complément avec la méthode Activate.

  2. Le complément, la vue de complément, l'adaptateur côté complément et les assemblys de contrat sont chargés dans le domaine d'application du complément.

  3. Une instance de l'adaptateur côté complément est créée en utilisant la vue de complément (avec la classe identifiée par l'attribut AddInBaseAttribute) comme constructeur. L'adaptateur côté complément hérite du contrat.

  4. L'adaptateur côté complément, qui est de type contrat, est passé, via la limite d'isolement (facultatif), au constructeur de l'adaptateur côté hôte.

  5. La vue hôte du complément, l'adaptateur côté hôte et les assemblys de contrat sont chargés dans le domaine d'application de l'hôte.

  6. Une instance de l'adaptateur côté hôte est créée en utilisant le contrat comme constructeur. L'adaptateur côté hôte hérite de la vue hôte du complément.

  7. L'hôte dispose du complément, typé en tant que vue hôte du complément, et peut continuer à appeler ses méthodes.

Procédures pas à pas

Trois rubriques de procédure pas à pas indiquent comment créer des pipelines à l'aide de Visual Studio :

Voir aussi

Concepts

Scénarios de pipelines de compléments

Compléments et extensibilité