introducción
En el proceso de desarrollo de software, el desarrollo de la forma total de componente similares, preferiblemente ninguna interacción entre los componentes, las pruebas independientes. Prisma de los módulos satisfacen esto.
Este diagrama de arquitectura muy bien explicar el concepto de módulos Prisma
apoyo Prism a través de archivos de configuración, carpetas, Módulo de manera cargado manualmente, y para verificar módulo de carga, y los ciclos de repetición incluyendo la verificación de dependencia
módulo de carga para Prism
mirada directa a la fuente de la misma
0, módulos cargados
- Módulos de carga se basan principalmente ModuleCatalog para descubrir módulo,
- Por ModuleManager módulo de carga al módulo y validado para asegurar el orden módulo de carga,
- ModuleInitializer responsable de la inicialización de módulos, incluyendo módulos que deben ser carga y se muestra la interfaz de usuario elementos de la clase y así sucesivamente.
Llamar al método de inicialización Prism.PrismApplicationBase
Crear un directorio
RegisterRequiredTypes método de inyección ModuleManager, ModuleInitializer al recipiente,
El último método InitializeModules de llamada, y llamar al método Run del ModuleManager
Observación de dos nombres de entender, es el primer módulo de descubrimiento y el módulo de verificación, el segundo módulo se carga y se inicializa.
mirada método initialize ModuleCatalogBase, y bastante seguro
La verificación es aún más interesante
verificación de repetibilidad
Por moduleNames nombre del módulo para determinar si hay se carga también, que si se arroja una excepción
verificación de la secuencia Loading
En el aspecto mismo tiempo en ModuleBase
Cada vez que se verifican cambios artículos
Encontrado que mirar por encima de método de verificación de ModuleManage LoadModulesWhenAvailable
Ver la final ModuleInitializer utiliza para inicializar el módulo. Linq consigue mediante la técnica de carga de retardo proceso.
Encontramos que este método debe ser implementado módulo de interfaz IModle. Y aquí llamadas registerTypes y método OnInitialized.
Después de leer el módulo es cargado, mirada en el ejemplo siguiente se
1, cargado por AppSetting
Mira los perfiles
en la inicialización
Ver CreateModuleCatalog reescritos, se ha introducido previamente módulo de control ModuleCatalog es el descubrimiento y validación.
Ver nombre de sección debe ser módulos.
Módulo lógico depende de analizar, y, finalmente, llamar al método AddModule
UIElement relacionada nuevo ModuleAModule en la carga.
2, a través del código de carga
Al cargar el código sea más sencilla, llame al defecto ModuleCatalog cargado directamente relacionada Módulo ConfigureModuleCatalog acercarse a ella.
Código sin cambios en ModuleAModule
Esta lógica 0 que ha sido explicado con claridad, y no en la descripción.
3, por la carga catálogo
Al cargar el directorio, si no ve la fuente de la forma de diseñar, crear un ModuleCatalog, la dirección del directorio entrante cuando se crea. Se encuentra en el interior del método directorio InnerLoad correspondiente, y busque la clase implementa la interfaz IModule por asambleas que atraviesan, se carga la clase.
Fuente también se veía exactamente en ese
Leer el funcionario considera que el código fuente se encontró más problemas, tales como la creación de un AppDoamin para cargar el ensamblado para garantizar el aislamiento y la seguridad de los datos. E incluso para crear una clase para reflejar el conjunto InnerModuleInfoLoader
Esa distribución acusaciones es muy buena, incluso podemos escribir un módulo para cargar la clase ModuleCatalog través de la red.
4, cargando manualmente
En primer lugar, en un módulo de carga en ConfigureModuleCatalog y InitializationMode se proporciona en la demanda,
A continuación, puede utilizar el Módulo LoadModule carga antes de métodos de carga cuando sea necesario
Es de destacar que no proporcionaron una interfaz Módulo de desinstalación.
resumen
Este se introduce el principio bajo los módulos cargados, de hecho,
- ModuleCatalog responsable del descubrimiento del módulo.
- Por ModuleManager módulo de carga al módulo y validado para asegurar el orden módulo de carga,
- ModuleInitializer responsable de la inicialización de módulos, incluyendo módulos que deben ser carga y se muestra la interfaz de usuario elementos de la clase y así sucesivamente.
La próxima salida introducirá el MVVM realización.