2009-10-14 16 views
6

He leído muchas declaraciones como "no debe obstruir su archivo app.config con la configuración personalizada". Sin embargo, tenía la impresión de que ese era exactamente el propósito del archivo.App.Config vs archivo XML personalizado

¿Es realmente una cuestión de preferencia? ¿O hay algún beneficio real (que no sea la separación de configuraciones) mediante el uso de un archivo XML personalizado, como apposed en el archivo app.config? Si necesita separar explícitamente la configuración, ¿sería mejor utilizar un ConfigurationSection personalizado en lugar de optar por un archivo XML personalizado?

Me gustaría aquí otros pensamientos de la gente sobre esto.

Respuesta

5

Algunas personas tienden a ir un poco por la borda en los manipuladores de sección de configuración personalizada, en mi humilde opinión.

Tiendo a usarlos solo cuando necesito algo que está muy estructurado; y eso es usado/escrito por terceros (es decir, quiero hacer alguna validación extravagante en él).

Creo que puedes usar app.config/web.config con toda felicidad para todas las configuraciones relevantes, y usar archivos XML separados cuando está muy claro que es un componente separado de la aplicación.

1

App.Config son buenos para la configuración que son específicos de la aplicación: la ruta a la base de datos es un buen ejemplo. El resto debería estar fuera de esto.

Una cosa que podría querer hacer es crear archivos específicos del usuario, luego puede usar un xml personalizado que se guardará en una IsolatedStore.

+1

Supongo que el problema es lo que se considera "específico de la aplicación".Como supongo que todas las configuraciones que necesita para su aplicación son específicas de la aplicación ... – James

5

Eche un vistazo a Application Settings Architecture, la aplicación.config es para la configuración de la aplicación, aunque es un término bastante general. Por lo tanto, le sugiero que consulte los archivos de configuración de la aplicación.

No almacenaría configuraciones como "cargar la base de datos al iniciar o no" en la aplicación.config. Preferiría utilizar un almacenamiento alternativo como la configuración de la aplicación para esto, no confundas la configuración de la aplicación con la configuración, aunque es posible que quieras hacerlo, no. se supone que app.config tiene una configuración con respecto a cosas de nivel inferior, como la conexión a la base de datos, el proveedor de membresía o cualquier otra información de Critical Application.

1

En mi opinión, considero que app.config es bueno para la configuración del tiempo de despliegue, como la ubicación de la base de datos o una dirección IP o ubicación de archivos de datos críticos, etc. Configuraciones de usuario como fuente, color, preferencias de comportamiento debe ir en un archivo diferente que puede crear y guardar fácilmente con serialización Xml.

+0

¿Consideraría la misma solución para cosas como mensajes UI, etc.? – James

+0

Si los mensajes de la interfaz de usuario son algo que el usuario configura directamente, entonces seguro. Pero si está pensando en los mensajes de la interfaz de usuario en términos de traducción de idiomas, entonces debe buscar ensamblados satelitales y soporte de .NET para la localización. –

2

mayoría de los ajustes tienden a caer en uno de los tres campos: Ajustes

  1. técnicos que afectan el comportamiento interno del código, por ejemplo, cadena de conexión de base de datos, ruta del archivo de datos, interruptores de registro, interruptores de manejo de errores, etc.
  2. Configuraciones del negocio que afectan la lógica comercial del producto, p. "¿se les permite a los usuarios acceder al Módulo CRM?"
  3. Valores de perfil específicos del usuario, p. Ej. "¿este usuario tiene permiso para acceder al módulo de CRM?".

el lugar natural de tipo 1 es en app.config o web.config, y el lugar natural para los tipos 2 y 3 es en la base de datos.