2008-10-29 13 views
6

Tengo algunos valores de configuración para una aplicación web asp.net. Serán mantenidos por un administrador del sistema una vez que el sistema entre en funcionamiento. ¿Debo almacenar estos valores en la base de datos o en un archivo de configuración? ¿Hay una mejor práctica para este tipo de cosas?¿Valores de configuración en DB o archivo?

Respuesta

8

Es fácil y conveniente crear una interfaz sólida para editar los valores en la base de datos.

Es menos fácil crear uno bueno para el archivo de configuración.

Por lo general, querría almacenar todo lo que desea que sus usuarios/administradores puedan editar posteriormente en la base de datos. Todo lo que solo necesita ser tocado durante cambios serios como la reinstalación, etc., es mejor en el archivo de configuración.

+0

Ilya, creo que no es tan simple. Estás hablando de páginas adicionales, pruebas, gestión de seguridad. ¿Mencioné las pruebas? Eso requiere tiempo, esfuerzo y dinero. Yo diría que el archivo de configuración tiene las ventajas "fáciles" y "convenientes". Desea la opción de base de datos cuando: 1. los administradores no tendrán acceso al archivo de configuración 2. Hay roles de seguridad de niveles múltiples 3. Las configuraciones deben ser leídas por otras aplicaciones, no solo por esta aplicación ASP.NET. En otras palabras, en situaciones más grandes y sofisticadas, el archivo de configuración no es suficiente. Cuando * es * suficiente, úselo. ¿Qué me estoy perdiendo? –

0

Dependiendo del contexto de la información de configuración, puede optar por dejarlo en el archivo web.config o puede crear tablas de mantenimiento para él en la base de datos. Por lo general, mantendría las cosas más específicas para el back-end, como cadenas de conexión, ubicaciones ftp, nombres de usuario/contraseñas (para la aplicación, no permisos de usuario) en la web.config embargo.

Normalmente guardo más información relativa que se relaciona con la información en la base de datos en lugar de la aplicación misma, en la base de datos.

Sin embargo, todo esto se basa libremente y no siempre es el caso.

+0

La actualización de web.config hace que IIS recicle el sitio. –

+0

Como dije, todo depende del contexto. – thismat

+1

Es cierto que cuando cambia el archivo de configuración, la aplicación reacciona de inmediato. El próximo golpe ve un comportamiento nuevo y no viejo. * No * es cierto que IIS se recicla. ASP.NET utiliza las notificaciones de cambio de archivo NTFS, por lo que se le informa cuando cambia el contenido del archivo. Eso es mucho más ligero que reciclar IIS. –

0

Prefiero evitar las bases de datos si puedo y no necesito el rendimiento. Si necesita/tiene una base de datos, entonces diría que ponga todo lo que pueda en un solo lugar. Una cosa para administrar.

3

Siempre recomendaría la base de datos simplemente porque puede crear una interfaz de usuario de administración relativamente fácil y auditar todos los cambios con facilidad similar. Aunque puede lograr lo mismo con los cambios en un archivo, la ruta de la base de datos con algún tipo de área de control Admin siempre es preferible. Especialmente cuando quieres saber quién cambió qué cuándo.

También en nuestro entorno, cambiar un archivo de configuración si hubo un error, implica la totalidad de las aprobaciones/etc. del proceso de gestión de cambios, lo cual es bastante doloroso. Entonces, si se toman el tiempo para incorporar la configuración en una base de datos, creo que a la larga funcionará mejor. Solo mi $ 0.02.

+0

De acuerdo, si la auditoría es esencial, esa es una razón para la base de datos. Si su proceso de gestión de cambios es diferente simplemente porque la información conceptual se almacena en un archivo en comparación con una base de datos, ese proceso es defectuoso. –

1

prefiero un archivo de texto de configuración, estilo ini o estilo XML para estas dos razones:

1 - Usted puede poner comentarios en el archivo de texto.

2 - Los editores de texto tienen un comando "deshacer".

0

Creo que las bases de datos son un gran lugar para los valores de configuración para aplicaciones distribuidas en las que desea que la configuración de los usuarios esté disponible sin importar qué computadora usen.

Los valores de configuración almacenados en archivos son muy útiles para configuraciones específicas de computadora (como si usa una unidad mapeada para identificar una ubicación y cada usuario puede tener una asignación diferente, como una unidad de CD/DVD por ejemplo).

Sin embargo, si aún no tiene una base de datos para la aplicación que está desarrollando, podría ser excesivo tener una base de datos exclusivamente para la configuración de la aplicación.

+0

JettGeek, la pregunta original era sobre una aplicación web ASP.NET, por lo que las configuraciones específicas de la computadora para los usuarios no se aplican. –

0

Prefiero un archivo de texto .ini. Son fáciles de editar y fáciles de mover cuando la aplicación se mueve. Aquí hay un ejemplo Setting class que puede serle útil.

+0

Protagonista, no entiendo por qué harías esto en absoluto. En principio, los archivos ini y los archivos de configuración son similares: archivos de texto simples que se pueden modificar con un editor de texto, el Bloc de notas es suficiente. La diferencia con los archivos de configuración es un amplio soporte en .NET Framework en los espacios de nombres System.Configuration y System.Web.Configuration. Así que los archivos de configuración le dan las virtudes de la idea del archivo ini, además de una amplia compatibilidad con la infraestructura. La * única * ventaja que puedo ver para los archivos ini es una opinión subjetiva de que la ini es más legible para los seres humanos. ¡Solo practica leyendo XML! –

Cuestiones relacionadas