2008-10-21 10 views
6

Hay varios valores que he estado almacenando en secciones de secciones de configuración de ASP.NET para cada "módulo". Me he estado preguntando si incluso pertenecen a estos archivos.¿Estos valores pertenecen a un archivo de configuración o base de datos?

El fondo se encuentra en: Estas son varias instancias de la aplicación web implementada. Todos usan la misma base de datos pero tienen su propia configuración.

Estoy seguro de que las diferencias entre el desarrollo y la producción van en los archivos de configuración. Algunos de los valores que sé deberían incluir: cadenas de conexión, proveedores a usar, configuración de depuración, etc.

He descompuesto todas las partes comunes en clases con sus propias reglas y métodos. Las piezas restantes son configuraciones diversas para cada módulo en cada sitio. Algunas de las opciones no estoy seguro de incluyen:

  • Para ModuleA, Mostrar/Ocultar Opción
  • Para ModuleB, ¿Cuál es la terminología que se utiliza en este campo
  • Para ModuleC, Permitir a usuario final realizar la acción X
+0

Todos los ajustes son globales para la instancia de la aplicación, pero se puede cambiar en tiempo de ejecución. –

Respuesta

4

Mmm estos sonidos son como cosas que es posible que desee cambiar en tiempo de ejecución para su aplicación sin tener que modificar la aplicación.config. Una regla de oro que me gusta seguir es que cualquier cosa en la configuración debe ser para la implementación o la configuración del servidor. En este caso, su configuración parece estar modificando el comportamiento de la aplicación y, por lo tanto, probablemente los movería a la base de datos si no es un gran esfuerzo.

+0

¿Tiene alguna recomendación para el diseño de la base de datos? Si entra en la base de datos, estamos considerando tener una sola tabla con applicationId, moduleId, key y value como campos o tablas definidas explícitamente (IE: config_moduleA, config_moduleB, etc.) –

+0

tabla única con una columna para la identificación del módulo. A continuación, puede agregar subconjuntos de módulos o módulos adicionales fácilmente. También es mucho más manejable para copias de seguridad y migración DB, y prácticamente todo. – gbjbaanb

+0

Realmente depende de la configuración y de la configuración que desee. Comenzaría en una sola mesa como dice @gbjbaanb y luego iré desde allí. Buena suerte. – smaclell

1

El Módulo A y el Módulo C suenan como información de perfil de usuario. Si el usuario no es dinámico, pero podría agregar funcionalidades posteriores, puede moverlas a una base de datos.

He escrito aplicaciones donde ModuleB también se habría puesto en una base de datos. Cosas como etiquetas de formulario, etc. pueden ir fácilmente en una base de datos. Si, en una fecha posterior, alguien decide agregar o eliminar dos puntos en todas las etiquetas de formulario, eso es bastante fácil de hacer si todo el texto está almacenado en un DB.

1

Considere la situación cuando necesite editar uno de los valores.

Si el valor está en web.config, guardar el cambio en ese archivo hará que la aplicación se recicle, tirando inconvenientemente a los usuarios actuales. No es tanto un problema si su aplicación está en una intranet solo durante el horario comercial (aunque podría recibir una llamada enojada del tipo que se quedó a trabajar hasta tarde). Pero potencialmente un problema en un sitio web público con usuarios internacionales.

Si el valor está en una base de datos, no tendrá ningún impacto en el procesamiento de la aplicación de esa manera.

De cualquier manera, considere si los valores están en caché en la RAM de la aplicación (web.config es). ¿Los valores de la base de datos están en una variable de aplicación o en caché? Si es así, es posible que no sepa cuándo ocurrirá el cambio. A menos que quieras reiniciar la aplicación.

Y, ¿qué acceso y permisos diferentes necesitarían los administradores adecuados para realizar los cambios? Alguien tendría que tener acceso a los servidores web para cambiar web.config, o a la base de datos (y la tabla) para cambiar eso.

0

Algunas preguntas: ¿Por qué usa la misma base de datos para varias instancias de la aplicación, y cómo va a mantener esto el mantenimiento? En el futuro, ¿será una opción dividir el DB para mejorar el rendimiento? ¿El modelo de configuración admite ese cambio mejor que el basado en DB?

En otras palabras, usted tiene que considerar unas variables de lote con el fin de responder a su pregunta :-)

+1

Se alojan varias instancias centralmente en la misma aplicación y servidores de base de datos, pero requieren conjuntos de configuraciones completamente diferentes. –

Cuestiones relacionadas