Complementos y extensibilidad

Los complementos proporcionan características o servicios extendidos en una aplicación host. .NET Framework proporciona un modelo de programación que los programadores pueden utilizar para desarrollar los complementos y activarlos en su aplicación host. Para lograr este objetivo, el modelo crea una canalización de la comunicación entre el host y el complemento. El modelo se implementa utilizando los tipos del espacio de nombres System.AddIn, System.AddIn.Hosting, System.AddIn.Pipeline y System.AddIn.Contract.

Esta información general contiene las siguientes secciones:

  • Modelo de complementos

  • Distinguir entre los complementos y los hosts

  • Temas relacionados

  • Referencia

NotaNota

Puede encontrar más código de ejemplo y vistas previas de herramientas con la tecnología de clientes para compilar canalizaciones de complementos en el sitio Managed Extensibility and Add-In Framework de CodePlex.

Modelo de complementos

El modelo del complementos se compone de una serie de segmentos que constituyen la canalización de los complementos (lo que también se conoce como "canalización de comunicación"), que es responsable de toda la comunicación entre el complemento y el host. La canalización es un modelo de comunicación simétrico de segmentos que intercambian datos entre un complemento y su host. Al desarrollar estos segmentos entre el host y el complemento, se proporcionan los niveles de abstracción necesarios que admiten el control de versiones del complemento y su aislamiento.

En la siguiente ilustración se muestra la canalización.

Canalización de complementos

Modelo de canalización de complementos.

No es necesario que los ensamblados de estos segmentos estén en el mismo dominio de aplicación. Puede cargar un complemento en su nuevo dominio de aplicación propio, en un dominio de aplicación existente o incluso en el dominio de aplicación del host. Puede cargar varios complementos en el mismo dominio de aplicación, lo que permite que los complementos puedan compartir recursos y contextos de seguridad.

El modelo de complementos admite un límite opcional (recomendado) entre el host y el complemento, que se denomina "límite de aislamiento" (también se conoce como "límite de comunicación remota"). Este límite puede ser un dominio de aplicación o un límite de proceso.

El segmento del contrato situado en el medio de la canalización se carga tanto en el dominio de aplicación del host como en el dominio de aplicación del complemento. El contrato define los métodos virtuales que el host y el complemento utilizan para intercambiar tipos entre sí.

Pasa poder atravesar el límite de aislamiento, los tipos deben ser contratos o tipos serializables. Los tipos que no son contratos ni tipos serializables deben convertirse en contratos mediante los segmentos del adaptador de la canalización.

Los segmentos de la vista de la canalización son interfaces o clases base abstractas que proporcionan al host y al complemento una vista de los métodos que comparten, según se ha en el contrato.

Para obtener más información acerca de cómo se desarrollan los segmentos de canalización, vea Desarrollo de canalizaciones.

En las secciones siguientes se describen las características del modelo de complementos.

Control de versiones independientes

El modelo de complementos permite que los hosts y los complementos tengan versiones independientes. Como resultado, el modelo del complemento habilita los escenarios siguientes:

  • Creación de un adaptador que permita a un host utilizar un complemento compilado en una versión anterior del host.

  • Creación de un adaptador que permita a un host utilizar un complemento compilado en una versión posterior del host.

  • Creación de un adaptador que permita a un host utilizar complementos compilados para un host diferente.

Detección y activación

Puede activar un complemento utilizando un token de una colección que represente los complementos encontrados en un almacén de datos. Los complementos se buscan en función del tipo que define la vista de host del complemento. También puede buscar un complemento concreto en función del tipo que define el complemento. El almacén de datos se compone de dos archivos caché: el almacén de la canalización y el almacén del complemento.

Para obtener información acerca de cómo se actualiza y se vuelva a compilar el almacén de datos, vea Detección de complementos. Para obtener información sobre la activación de complementos, vea Activación de complementos y Cómo: Activar complementos con niveles de seguridad y aislamiento diferentes.

Niveles de aislamiento y procesos externos

El modelo de complementos admite varios niveles de aislamiento entre un complemento y su host o entre distintos complementos. Comenzando por el de menor aislamiento, estos niveles son los siguientes:

  • El complemento se ejecuta en el mismo dominio de aplicación que el host. Esta situación no es recomendable, porque se pierden las capacidades de aislamiento y descarga que se obtienen cuando se utilizan dominios de aplicación diferentes.

  • Varios complementos se cargan en el mismo dominio de aplicación, que es diferente del dominio de aplicación que utiliza el host.

  • Cada complemento se carga exclusivamente en su propio dominio de aplicación. Éste es el nivel de aislamiento más común.

  • Varios complementos se cargan en el mismo dominio de aplicación de un proceso externo.

  • Cada complemento se carga exclusivamente en su propio dominio de aplicación en un proceso externo. Éste es el escenario de mayor aislamiento.

Para obtener información sobre el uso de procesos externos, vea Cómo: Activar complementos con niveles de seguridad y aislamiento diferentes.

Administración de la duración

Dado que el modelo de complementos traspasa los límites del dominio de aplicación y del proceso, la recolección de elementos no utilizados no resulta suficiente para liberar y reclamar objetos. El modelo de complementos proporciona un mecanismo de administración de la duración que utiliza recuentos de referencias y tokens y que normalmente no requiere programación adicional. Para obtener más información, vea Administración de la duración.

Volver al principio

Distinguir entre los complementos y los hosts

La diferencia entre un complemento y un host consiste simplemente en que el host es el que activa el complemento. El host puede ser el mayor de los dos, como una aplicación de procesamiento de texto y sus correctores ortográficos, o puede ser el menor de los dos, como un cliente de mensajería instantánea que contiene un reproductor multimedia. El modelo de complementos admite los complementos tanto en escenarios de cliente como en escenarios de servidor. Algunos ejemplos de complementos de servidor son los complementos que proporcionan servidores de correo con detección de virus, filtros de correo no deseado y protección de IP. Ejemplos de complementos de cliente son los complementos de referencia de los procesadores de texto, las características especializadas de los programas de tratamiento de imágenes y los juegos y las herramientas de detección de virus de los clientes de correo electrónico locales.

Volver al principio

Temas relacionados

Título

Descripción

Desarrollo de canalizaciones

Describe la canalización de comunicación de los segmentos desde la aplicación host al complemento. Contiene ejemplos de código en temas del tutorial en los que se describe cómo se genera la canalización y cómo se implementan segmentos en la canalización en Visual Studio.

Detección de complementos

Describe cómo los complementos pueden hacerse reconocibles por las aplicaciones host.

Activación de complementos

Describe cómo se activan y desactivan los complementos.

Rendimiento de los complementos

Describe cómo se utiliza la carga de ensamblados neutrales respecto al dominio y las imágenes nativas para mejorar el rendimiento de los complementos.

Cómo: Activar complementos con niveles de seguridad y aislamiento diferentes

Describe cómo se activan los complementos en diferentes escenarios de niveles de seguridad, dominios de aplicación y procesos.

Cómo: Usar datos de calificación

Describe cómo se aplican los datos personalización atribuidos a complementos y segmentos de canalización y cómo se obtiene acceso a ellos.

Experiencia de programadores de complementos

Describe cómo se desarrolla un complemento para utilizar los segmentos requeridos de la canalización de los complementos.

Dominios de aplicación y ensamblados

Describe la relación entre los dominios de aplicación, que proporcionan un límite de aislamiento para la seguridad, confiabilidad, control de versiones y ensamblados.

Volver al principio

Referencia

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

Volver al principio