Creando Aplicación Extensibles Con MAF (System.Addin)

Hace algunas semanas dando vueltas me encontré con la forma de poder hacer que una aplicación soporte plug-ins . todo esto gracias al namespace System.Addin.

gracias a la documentación de la gente del blog de De esta herramienta . voy  a pasar a explicarles como funciona todo esto.

The Pipeline

es el componente que se encarga de la comunicación entre nuestra aplicación y el complemento. este “canal ” es creado dinámicamente por MAF a través de un conjunto de componentes debidamente acoplados que se utilizan para la versión ,marhal y transformar los datos a medida que pasan entre el la aplicación y cada uno de los completos que se encuentran cargados.
image001 Cada parte del pipeline se encuentra en un ensamblado diferente cargado según sea necesario para administrar el complemento. MAF descubre automáticamente cada componente  y después los carga mediante reflexión .
Para mayor fiabilidad , MAF permite cierto nivel de insolación  entre el completo y la aplicación host , todo a la derecha del Contract se carga en el AppDomain(), y todo a la derecha se carga en un nuevo AppDomain con sus permisos de seguridad establecidos .
En el Pipeline ahí tres partes principales partiendo desde el Contract en el centro .

Contract

Como ya pueden darse cuenta  MAF esta basados en interfaces; de que otra forma ?.
Por Ejemplo el Contract para un traductor seria algo así:

[AddInContract]
public interface ITranslator : IContract
{
   string Translate(string input);
}

La interfaz deriva de IContract, lo que es un requisito para las nuestras interfaces. y es lo que sirve de “apoyo ” en el pipeline cuando este se inicia. también esta tiene que estar decorada con el atributo  [AddInContract] para poder decirle a MAF cual es el(los) Contract a utilizar  en la construcción del pipeline. Ambos la interfaz IContract y el Atributo [AddInContract]  están en el namespace  System.AddIn.Pipeline en System.AddIn.Contract.dll.
Hasta aquí por hoy ya tengo algo de sueño en los próximos días seguiré explicando  que son los views  y los adapters . …..

Leave a comment

Your email address will not be published. Required fields are marked *