Buenas prácticas para el manejo de múltiples archivos de configuración con los marcos de DI

StackOverflow https://stackoverflow.com/questions/2040727

Pregunta

En mi solución actual tengo 18 proyectos y la mayoría de ellos tienen sus propios archivos de configuración (app.config o web.config). Cada proyecto utiliza el montaje BLL compartida única. Estoy usando Autofac para manejar dependencias, pero no han llegado con una forma decente de la gestión de mi configuración. entradas de configuración son más o menos lo mismo, pero los valores son diferentes. Algunos proyectos utilizan secions de configuración personalizados y algunos no lo son.

terminé con:

  1. Crear clase autofac programa previo única para registrar todas las dependencias excepto envoltorios de archivo de configuración.
  2. Crea conjunto separado (referenciado por todos los proyectos) con interfaz IConfiguration.
  3. Crea propia implementación de cada proyecto de IConfiguration.
  4. dependencias de archivos de inicio en lugar apropiado de cada proyecto a través de programa previo compartido.
  5. Registrar propia implenentation IConfiguration del proyecto por separado después de la inscripción de arranque.

Estoy muy nuevo en Autofac y DI, en general, y tratando de encontrar un buen equilibrio entre la complejidad y la extensibilidad.

¿Hay mejores maneras de administrar los archivos de configuración?

Gracias.

¿Fue útil?

Solución

En Autofac que utilizar módulos para este propósito. Grupos de componentes relacionados se encapsulan en un módulo, que está configurado por el API programática.

configuración XML de Autofac tiene soporte para módulos, así que una vez que haya decidido utilizar uno en un applicaiton, se puede registrar el módulo (en lugar de todos los componentes que contiene) en el archivo de configuración.

parámetros de soporte de módulos que pueden ser transmitidas a los componentes internos, por ejemplo cadenas de conexión, URI, etc.

La documentación aquí debería empezar: http://code.google.com / p / autofac / wiki / StructuringWithModules

HTH

Nick

Otros consejos

Como regla general sólo me puse configuración de la dependencia en los archivos .config si representan algo que quiero ser capaz de cambiar sin tener que recompilar la aplicación. Por defecto, no tengo ninguno con este tipo de configuraciones.

Yo no (todavía) saber sobre autofac, pero en el castillo de Windsor, se pueden mezclar .config y la configuración programática del contenedor, y eso es lo que suele hacer: Tengo algunas dependencias configuradas en .config porque quiero para poder cambiarlos sin recompilación, pero el resto se ha registrado en el código (a menudo por convención).

La forma en que he acercado a un problema similar al suyo es hacer una biblioteca independiente que contiene un recipiente especializado - esto se parece mucho a su enfoque. Este recipiente especializado encapsula toda la configuración común de las dependencias.

En cada aplicación tengo un recipiente aún más especializados que se deriva del contenedor y anula cualquier configuración compartida que necesita para anular.

A mi modo de entender su descripción, este enfoque parece ser no muy lejos de la suya, pero hágase un favor y se mueven tanto la configuración como sea posible fuera de XML y en código -. Que en realidad se hace más manejable de esa manera

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top