Al desarrollar una aplicación de formularios Windows Forms .NET tenemos la opción de elegir entre esas App.config
etiquetas para almacenar nuestros valores de configuración. ¿Cuál es mejor?
<configuration>
<!-- Choice 1 -->
<appSettings>
<add key="RequestTimeoutInMilliseconds" value="10000"/>
</appSettings>
<!-- Choice 2 -->
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" >
<section name="Project1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Project1.Properties.Settings>
<setting name="TABLEA" serializeAs="String">
<value>TABLEA</value>
</setting>
</Project1.Properties.Settings>
</applicationSettings>
</configuration>
.net
web-config
app-config
Jader Dias
fuente
fuente
Respuestas:
Lo básico
<appSettings>
es más fácil de manejar: solo abofetear una<add key="...." value="..." />
entrada y listo.La desventaja es: no hay verificación de tipo, por ejemplo, no puede suponer con seguridad que su número que desea configurar realmente es un número: alguien podría poner una cadena en esa configuración ... simplemente tiene acceso a él
ConfigurationManager["(key)"]
y luego está arriba para que sepa con lo que está tratando.Además, con el tiempo,
<appSettings>
puede volverse bastante complicado y desordenado, si muchas partes de su aplicación comienzan a poner cosas allí (¿recuerda el viejo archivo windows.ini? :-)).Si puede, preferiría y recomendaría usar sus propias secciones de configuración: con .NET 2.0, se vuelve realmente fácil. De esa manera, puede:
Hay una serie de artículos realmente buenos sobre usted para desmitificar el sistema de configuración .NET 2.0 en CodeProject:
Desentrañar los misterios de la configuración de .NET 2.0
Decodificando los misterios de la configuración de .NET 2.0
Descifrando los misterios de la configuración de .NET 2.0
¡Muy recomendable! Jon Rista hizo un gran trabajo al explicar el sistema de configuración en .NET 2.0.
fuente
La configuración de la aplicación se puede controlar desde un diseñador (por lo general, hay un archivo Settings.settings de forma predeterminada) para que sea más fácil de modificar y puede acceder a ellos mediante programación a través de la clase Configuración, donde aparecen como una propiedad fuertemente tipada. También puede tener configuraciones de aplicación y nivel de usuario, así como configuraciones predeterminadas para retroceder.
Está disponible desde .NET 2.0 en adelante y desprecia la otra forma de hacerlo (por lo que puedo decir).
Se dan más detalles en: msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
fuente
He estado usando un patrón que encontré hace un tiempo en el que usas etiquetas xml básicas pero envuelves la configuración en una clase de configuración estática. Entonces, una aplicación de bricolaje.
Patrón de configuración estática DotNetPearls
Si lo haces de esta manera puedes:
Es tedioso configurarlo, pero funciona bien, oculta referencias a nombres clave y está fuertemente tipado. Este tipo de patrón funciona bien para la configuración que no cambia la aplicación, aunque probablemente también podría trabajar en soporte para los cambios.
Config:
Clase de configuración:
fuente
Para comprender los pros y los contras de la configuración en el
app.config
, le sugiero que examine los detalles técnicos de ambos. He incluido enlaces donde puede encontrar el código fuente para el manejo, describiendo más detalles técnicos a continuación.Permítanme resumir brevemente lo que reconocí cuando trabajé con ellos ( nota: lo mismo se aplica al
web.config
archivo de un sitio web / aplicación web):Pros
Permiten almacenar datos escritos, incluidos los tipos de objetos (a través de la
serializeAs
propiedad)Tienen un alcance de usuario y aplicación, lo que permite almacenar valores predeterminados
Se admiten en la sección de configuración de Visual Studio
Las cadenas largas y / o los datos con caracteres especiales son muy compatibles (por ejemplo, cadenas JSON incrustadas que contienen comillas dobles)
Contras
La configuración del usuario se almacena en un lugar diferente en el perfil del usuario (con una ruta críptica), puede ser difícil de limpiar
La configuración del alcance de la aplicación es de solo lectura durante el tiempo de ejecución de la aplicación (solo se puede cambiar la configuración del alcance del usuario durante el tiempo de ejecución)
Código de métodos de lectura / escritura creado por el diseñador de configuraciones de Visual Studio, no proporcionado directamente por herramientas de terceros (consulte el enlace anterior para obtener una solución alternativa)
Pros
Son "ligeros", es decir, fáciles de manejar
Acceso de lectura y escritura durante el tiempo de ejecución de la aplicación.
Los administradores pueden editarlos fácilmente en el Administrador de
Internet Information Services (IIS)
(Vista de características -> Configuración de la aplicación, tenga en cuenta que el nombre del icono es engañoso ya que solo puede manejar AppSettings y no ApplicationSettings)
Contras
Solo admite datos de cadena; la longitud de la cadena y los caracteres especiales son limitados
No tienen alcance de usuario
No admiten valores predeterminados
No se admiten directamente en la sección de configuración de Visual Studio
fuente
Me gusta trabajar con la versión más simple para almacenar y acceder a valores individuales.
Escribí una clase de utilidad para acceder a los valores de una manera segura de tipos que permite valores predeterminados. Si no se proporcionan los valores predeterminados, se proporcionan mensajes de excepción útiles.
Puedes ver / descargar la clase aquí:
http://www.drewnoakes.com/code/util/app-settings-util/
fuente
App.config
archivo por completo y usar su propio archivo de configuración. Muchas bibliotecas hacen eso. NLog viene a la mente.