Compartir a través de


Desarrollo de canalizaciones

Actualización: noviembre 2007

La canalización de complementos es la ruta de acceso de los segmentos de canalización que la aplicación host y su complemento deben utilizar para comunicarse entre sí.

En la ilustración siguiente se muestra la canalización de comunicación simple y sus segmentos.

Canalización de complementos

La aplicación host se encuentra en un extremo de la canalización y el complemento en el otro. Comenzando desde cada extremo y desplazándose hacia el centro, la aplicación host y el complemento tienen una clase abstracta que define la vista del modelo de objetos que ambos comparten. Estos tipos (clases) conforman el segmento de canalización de la vista de complemento y la vista de host del segmento de canalización del complemento. El segmento de canalización de la vista de complemento suele contener varias clases abstractas, pero la clase de la que se hereda el complemento es la que se denomina "base del complemento".

El segmento de canalización del adaptador del complemento y el segmento de canalización del adaptador del host convierten el flujo de tipos entre los segmentos de canalización de las vistas y el segmento de canalización del contrato. El segmento central de la canalización es un contrato que se deriva de la interfaz IContract. Este contrato define los métodos que la aplicación host y su complemento utilizarán.

Si carga el host y el complemento en dominios de aplicación independientes, habrá un límite de aislamiento que separará el ámbito de la aplicación host del ámbito del complemento. El contrato es el único ensamblado que se carga en los dominios de aplicación de los complementos y el host. El host y el complemento sólo hacen referencia a sus vistas de los métodos del contrato. Por tanto, están separados del contrato por un nivel de abstracción.

Para desarrollar segmentos de canalización, debe crear la estructura de directorios que los va a contener. Para obtener más información sobre los requisitos de desarrollo e instrucciones de los ámbitos, vea Requisitos del desarrollo de canalizaciones.

En la ilustración siguiente se muestran los tipos que conforman los segmentos de la canalización. Los nombres de los tipos que aparecen en la ilustración son arbitrarios, pero todos los tipos salvo el host y la vista de host del complemento necesitan atributos para que puedan ser detectados por los métodos que generan un almacén de datos.

Canalización de complementos con tipos

En la tabla siguiente se describen los segmentos de canalización para la activación de un complemento. Para obtener más información sobre estos segmentos, vea Contratos, vistas y adaptadores.

Segmento de canalización

Descripción

Host

Ensamblado de la aplicación que crea una instancia de un complemento.

Vista de host del complemento

Representa la vista de la aplicación host de los métodos y los tipos de objetos que se utilizan para establecer comunicación con el complemento. La vista de host es una clase base abstracta o interfaz.

Adaptador de host

Ensamblado con una o varias clases que adapta los métodos al contrato, y viceversa.

Este segmento de la canalización se identifica con el atributo HostAdapterAttribute.

No se admiten ensamblados de varios módulos.

Contrato

Interfaz que se deriva de la interfaz IContract y que define el protocolo para la comunicación de tipos entre el host y su complemento.

Este segmento de la canalización se identifica estableciendo el atributo AddInContractAttribute.

Adaptador de complemento

Ensamblado con una o varias clases que adapta los métodos al contrato, y viceversa.

Este segmento de la canalización se identifica con el atributo AddInAdapterAttribute.

Todos los ensamblados del directorio del adaptador del complemento que contienen un tipo que tiene un atributo AddInAdapterAttribute se cargan en el dominio de aplicación del complemento.

Todos los ensamblados del directorio del complemento se cargan en su propio dominio de aplicación.

No se admiten ensamblados de varios módulos.

Vista de complemento

Ensamblado que representa la vista del complemento de los métodos y tipos de objetos que se utilizan para comunicarse con el host. La vista de complemento es una clase base abstracta o interfaz.

Este segmento de la canalización se identifica con el atributo AddInBaseAttribute.

Todos los ensamblados del directorio AddInViews que contienen un tipo que tiene un atributo AddInBaseAttribute se cargan en el dominio de aplicación del complemento.

Complemento

Tipo con instancias que realiza un servicio para el host.

Ruta de activación de canalización

En la ilustración siguiente se muestra la activación de tipos cuando se activa un complemento. También se muestra la transferencia de objetos al host, como los resultados de un cálculo o una colección de objetos. Éste es el escenario más habitual.

Ruta de activación desde el complemento al host

La ruta de activación de la canalización se produce como sigue:

  1. La aplicación host activa el complemento con el método Activate.

  2. Los ensamblados del complemento, de la vista de complemento, del adaptador del complemento y del contrato se cargan en el dominio de aplicación del complemento.

  3. Se crea una instancia del adaptador del complemento utilizando la vista de complemento (con la clase identificada por el atributo AddInBaseAttribute) como su constructor. El adaptador del complemento hereda del contrato.

  4. El adaptador del complemento, que tiene el mismo tipo que el contrato, se pasa a través del límite de aislamiento (opcional) al constructor del adaptador del host.

  5. Los ensamblados de la vista de host del complemento, del adaptador del host y del contrato se cargan en el dominio de aplicación del host.

  6. Se crea una instancia del adaptador del host utilizando el contrato como su constructor. El adaptador del host hereda de la vista de host del complemento.

  7. El host tiene el complemento, que es del mismo tipo que la vista de host del complemento, y puede continuar llamando a sus métodos.

Tutoriales

Hay tres tutoriales en los que se describe cómo se crean canalizaciones en Visual Studio:

Vea también

Conceptos

Escenarios de canalizaciones de complementos

Información general sobre complementos