2009-10-20 10 views
14

Estoy desarrollando una aplicación de escritorio .NET 3.5 C#. Debe ser extensible a través de complementos.MEF vs Mono.AddIn

¿Hay algún artículo, etc. discutiendo las diferencias entre MEF y Mono.AddIn para ayudarme a tomar una decisión informada?

¿O mejor aún tienes experiencia con estos dos frameworks y puedes comentar sobre ellos?

Gracias, Patrick

Respuesta

4

Creo Hanselminutes Show #181 tiene una cierta discusión sobre Mono.AddIns y lo que trae a la mesa.

Mientras recorría la web, también encontré this discussion, que resalta la diferencia en la forma en que estos dos marcos actualmente manejan el almacenamiento en caché de catálogos.

+0

Gracias. Es un comienzo ... –

1

Investigué ambos y decidí ir con MEF, principalmente porque se lanzará como parte de .NET 4 por lo que automáticamente habrá más apoyo, discusión y desarrollo a su alrededor. Además, MEF parecía ser capaz de hacer todo lo que necesitaba usando atributos directamente en el código, y Mono.AddIns requería algunos archivos de metadatos, si no recuerdo mal.

EDITAR: Si desea ver el resultado de mis esfuerzos en el uso de MEF para construir un marco de aplicación extensible, he de código abierto, y les da un nombre: SoapBox Core.

+0

También puede conducir MonoAddins desde los atributos. El manifiesto XML solo es necesario si desea conectar datos/metadatos o utilizar algunas de las funciones más avanzadas. ¡Incluso puedes mezclar y combinar! –

+0

@mhutch: Lo sé, pero había algunas características que solo estaban disponibles en el manifiesto XML, y prefería el modelo de todos los atributos de MEF. Pero eso es bastante menor, estoy de acuerdo. –

18

[NOTA: Yo trabajo en MonoDevelop, que utiliza Mono.Addins, pero he discutido las diferencias entre el MEF y Mono.Addins ampliamente con Glenn cuadra del equipo MEF semana pasada]

MEF se basa en que componen el código , aunque las abstracciones subyacentes son muy flexibles. Por el contrario, Mono.Addins se basa en un árbol de metadatos, donde puede conectar datos/metadatos/códigos en un esquema enriquecido de su definición, de modo que las extensiones pueden agregar datos/metadatos, así como también código.

Mono.Addins le brinda un sistema adicional de administración/empaquetado/repositorio/actualización de inmediato. Para MEF, en este punto, tendrías que construir el tuyo propio.

MEF tiene una barrera de entrada un poco más baja, y se ha dedicado mucho más trabajo de diseño a su usabilidad y abstracciones subyacentes. Además, es parte de .NET 4, por lo que tendrá una comunidad de usuarios mucho mayor que se desarrollará con/para ello.

En este punto, si necesita conectar tanto los datos/metadatos como el código y desea un sistema de empaquetado listo, recomendaría Mono.Addins, de lo contrario, recomendaría MEF. De cara al futuro, es probable que las características de Mono.Addins se implementen en MEF, por lo que probablemente haya una ruta de migración hacia MEF.

+0

¿Cuál es el estado de MonoAddins a partir de 2014? El último commit en codeplex fue en 2012, eso significa que está muerto o muy estable :) – user3557327

+1

Se mantiene activamente en GitHub: https://github.com/mono/mono-addins –