El mejor enfoque para configurar múltiples aplicaciones .Net

Tenemos un conjunto de aplicaciones .Net 3.5 interconectadas. Algunos son sitios web, algunos son servicios web y otros son aplicaciones de Windows. Cada aplicación tiene actualmente su propio archivo de configuración (app.config o web.config), y actualmente hay algunas claves duplicadas en los archivos de configuración (que en este momento se mantienen sincronizados manualmente) ya que varias aplicaciones requieren el mismo valor de configuración. Además, este conjunto de aplicaciones se implementa a través de varios envrionemnts (desarrollo, prueba, vivo, etc.)

¿Cuál es el mejor enfoque para administrar la configuración de estas múltiples aplicaciones desde una sola fuente de configuración, por lo que los valores de configuración se pueden compartir entre varias aplicaciones si es necesario? También nos gustaría tener configuraciones separadas para cada entorno (por lo que al implementar no tienes que cambiar manualmente ciertos valores de configuración que son específicos del entorno, como cadenas de conexión), pero al mismo tiempo no quieres mantener múltiples configuraciones grandes archivos (uno para cada entorno) como mantener esto sincronizado al agregar nuevas claves de configuración resultará problemático.

0

5 Respuestas

Puede dividir App.config en varios archivos de configuración. Usted solo especifica el nombre del archivo que contiene la sección de configuración.

Cambiar app.config:


  
  


  

En app.config y SomeSetting.xml:



Donde SomeSetting.xml contiene:

Ahora puede componer su app.config a partir de diferentes archivos de sección con algún tipo de script de compilación o implementación. P.ej.:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml
0
agregado

Visual Studio tiene una función relativamente oscura que le permite agregar elementos existentes como enlaces, lo que debería lograr lo que está buscando. Consulte La publicación de Derik Whittaker sobre este tema para más detalles.

Visual Studio realmente debería hacer que esta opción sea más visible. Nadie realmente piensa hacer clic en esa pequeña flecha al lado del botón "Agregar".

0
agregado

Consulte el marco de prismas del grupo de patrones y prácticas de Microsofts.

0
agregado
¿Cómo ayudaría prism con los problemas de configuración?
agregado el autor Robert MacLean, fuente

Usamos plantillas de archivos como MyApp.config.template y MyWeb.config.template con propiedades NAnt para los bits que son diferentes entre entornos. Por lo tanto, el archivo de la plantilla podría verse así:


    ${DbConnString}
    

Durante una compilación, generamos todas las configuraciones para los diferentes entornos simplemente recorriendo cada entorno en un script NAnt, cambiando el valor de las propiedades NAnt $ {DbConnString} y $ {WebServiceUri} para cada entorno (de hecho, todas están configuradas en un único archivo con secciones para cada entorno) y haciendo una copia NAnt con la opción de expandir propiedades activadas.

Nos tomó un poco de tiempo configurarlo, pero nos ha devuelto al menos diez veces la cantidad de tiempo ahorrada jugando con diferentes versiones de archivos de configuración.

0
agregado
0
agregado
No sé por qué esto obtuvo un resultado negativo, esas 2 preguntas serán muy útiles al administrar las configuraciones.
agregado el autor sontek, fuente