Activación de complementos

Actualización: noviembre 2007

Después de utilizar los métodos de detección y obtener una colección de tokens de complementos en una vista de host especificada, puede activar un complemento desde la colección utilizando su token, representado mediante un objeto AddInToken. Para obtener más información acerca de cómo se detectan los complementos que están disponibles en el sistema, vea Detección de complementos.

Cuando utilice las sobrecargas del método Activate en un objeto AddInToken, puede especificar las opciones de activación siguientes:

  • El dominio de aplicación en el que se carga el complemento.

  • El nivel de confianza de seguridad o el conjunto de permisos que se concede al dominio de aplicación que se crea para el complemento.

  • El proceso externo en el que se va a activar el complemento. Esta es una opción avanzada del desarrollo del complemento.

El método Activate devuelve la vista del host del complemento; la aplicación host puede llamar a continuación a los métodos según se definió en el contrato. La aplicación host puede controlar la duración del complemento, ya que puede cerrarlo con la clase AddInController. También puede permitir que el recolector de elementos no utilizados reclame el complemento cuando ya no existan referencias.

Activación

Normalmente, las aplicaciones host mantienen el host y el complemento en ejecución en dominios de aplicación independientes, con un dominio de aplicación por cada complemento. De este modo, los complementos pueden operar en contextos aislados del host y de otros complementos. Este aislamiento evita que se produzcan conflictos y habilita la creación de versiones de los complementos.

Dado que el complemento se encuentran en su propio dominio de aplicación, puede probarlo en su propio entorno y también probar su extremo de la canalización. Los segmentos de canalización del adaptador del complemento, del contrato y de la vista del complemento se cargan en el mismo dominio de aplicación que el complemento. Cualquier otro ensamblado requerido por el complemento también se carga en el dominio de aplicación del complemento.

Cuando se activan los complementos, la aplicación host normalmente utiliza la sobrecarga del método Activate que toma un nivel de seguridad especificado y que automáticamente crea un dominio de aplicación para el complemento. Puede especificar AddInSecurityLevel o PermissionSet para el nivel de seguridad. Cuando el método Activate crea un dominio de aplicación para el complemento, establece que el archivo de configuración del dominio de aplicación sea addinassemblyname.config, si ese archivo de configuración existe.

Si desea obtener un control más depurado o agrupar los complementos, puede utilizar las sobrecargas del método Activate para especificar un dominio de aplicación existente en el que cargar los complementos. Si especifica un dominio de aplicación existente, puede compartir recursos, contextos de seguridad e información sobre la referencia cultural con otros complementos con total facilidad.

Conviene tener en cuenta el contexto de seguridad que se aplicará al dominio de aplicación del complemento. Por ejemplo, una aplicación host puede ejecutarse con plena confianza y necesitar menos permisos para ejecutar los complementos. Puede utilizar las sobrecargas del método Activate para especificar una zona de seguridad con la enumeración AddInSecurityLevel. Estas zonas de seguridad incluyen FullTrust, Host, Intranet o Internet. Los permisos apropiados para la zona de seguridad se aplican al código que se está ejecutando en el dominio de aplicación. Los permisos disponibles para estas zonas de seguridad dependen de la configuración de seguridad de .NET Framework existente.

Si no desea utilizar los permisos de una zona de seguridad, puede utilizar las sobrecargas del método Activate para proporcionar su propio objeto PermissionSet.

Puede utilizar las sobrecargas del método Activate para crear un proceso externo para el complemento o para asociar el complemento con un proceso externo existente que se creó para hospedar complementos. Estas sobrecargas utilizan las clases AddInProcess y AddInEnvironment. Para obtener más información acerca de cómo se activan complementos en un proceso externo, vea Cómo: Activar complementos con niveles de seguridad y aislamiento diferentes.

Control de la duración de un complemento

La clase AddInController proporciona métodos para las siguientes tareas relacionadas con los complementos:

  • Cerrar el complemento.

  • Obtener el dominio de aplicación del complemento.

  • Obtener un token del complemento para su activación futura.

  • Obtener un objeto AddInEnvironment para utilizarlo con la activación de un proceso externo.

Utilice el método GetAddInController para obtener el controlador de un determinado complemento.

El método Shutdown administra los detalles requeridos para cerrar un complemento. Entre ellos se incluye el conocer de antemano dónde se carga el complemento, su dominio de aplicación y posiblemente los procesos externos en que se está ejecutando el complemento. Si el dominio de aplicación se crea automáticamente, este método descarga el dominio de aplicación. Si el complemento se activa en un dominio de aplicación determinado, el servicio de duración del objeto de contrato remoto terminará, lo que dejará el dominio de aplicación cargado. Cuando se elimine el objeto de contrato, el complemento estará disponible para ser reclamado por la recolección de elementos no utilizados.

Código de

En el ejemplo siguiente se activa un complemento con un nivel de seguridad especificado en un dominio de aplicación creado automáticamente.

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

Vea también

Tareas

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

Conceptos

Detección de complementos

Administración de la duración

Contratos, vistas y adaptadores

Otros recursos

Complementos y extensibilidad