He estado utilizando el Windsor IoC Container para mi aplicación basada en web, para resolver la implementación de la capa de acceso a datos que la aplicación debería usar.MEF: ¿Dónde debería colocar el CompositionContainer?
interfaz de usuario de la aplicación web constará de páginas, y cada página se compone de pequeñas unidades llamadas portlets. (Su concepto es algo similar a los widgets). Estos llamados portlets son básicamente controles web y se pueden configurar en tiempo de ejecución para cada página de forma inadvertida.
La aplicación enviará con algunos de ellos incorporado, pero me gustaría que permita extender fácilmente.
me di cuenta de que este mecanismo es exactamente lo que el MEF está construido para. Así que decidí implementar el sistema de tal manera que descubriera portlets usando MEF. Luego, me di cuenta de que también puede hacer lo que actualmente uso Windsor, así que decidí deshacerme de Windsor a favor de MEF.
Obviamente, voy a tener que usar el DirectoryCatalog, que escanea los archivos .dll en la carpeta bin de la aplicación y devuelve todo lo que necesito.
leí algunos tutoriales, ejemplos y todas las preguntas relacionadas con el MEF en stackoverflow, así. Pensé que la forma más fácil de utilizar MEF es a través del PartInitializer que Glenn Block mencionó en sus tutoriales, pero me di cuenta de que no está en MEF. En realidad, está en el código que descargué de CodePlex, pero en un ensamble separado, y solo en fuente, no en forma binaria. (¿Esto significa que no es una parte del MEF? O lo que es el punto de ponerla en un proyecto separado?) Entonces, me di cuenta de que es para Silverlight, por lo que en realidad no me ayuda. (¿O debería simplemente compilar eso contra .NET 3.5, o incluirlo en mi proyecto, y estoy listo para ir?)
Así que ahora tengo un problema que es el siguiente: ¿dónde debería poner el CompositionContainer en mi aplicación?
Hay otra cosa que me gustaría tener en cuenta: ¿debo usar solo un CompositionContainer durante la vida de la aplicación, o prefiero crear un contenedor para cada momento cuando lo necesito?