Quiero guardar la configuración de mi proyecto que incluye
- Tamaño de pantalla
- Posición de la pantalla
- Rutas de carpeta
- Configuración de usuarios, etc.
Los lugares estándar donde puede guardar estos valores de configuración son:
- Registro
- Archivos INI
- Archivos personales (como * .cfg)
¿Cómo eliges entre estos lugares? Además, ¿hay ventajas y desventajas de usar alguna de ellas?
Respuestas:
Registro:
+
Relativamente estándar en el entorno de Windows.+
Generalmente buen soporte de instaladores, etc.-
API específica de plataforma, si alguna vez desea portar su aplicación.-
No particularmente legible para humanos.Archivos INI:
+
Formato simple+
Portátil.+
Legible por humanos.-
Puede ser difícil almacenar información más compleja (por ejemplo, cualquier cosa anidada a más de dos niveles de profundidad).?
Puede que tenga que escribir su propio analizador (aunque no es difícil) o usar una biblioteca externa como SimpleIni (gracias a Jonathan Merlet por el comentario).Archivos XML (supongo que esta es la opción .cfg):
+
Un formato estándar.+
Portátil.+
Admite estructuras profundamente anidadas.-
No particularmente legible para humanos.Personalmente, para las aplicaciones de Windows, tiendo a usar C # e ir con un archivo personal para el usuario, almacenado como XML. Lo hago normalmente porque la legibilidad humana no suele ser una prioridad en los tipos de aplicaciones que escribo (y la aplicación debe tener un editor de configuración, en cualquier caso), y en el entorno .NET , es muy fácil trabajar con XML. Muy a menudo termino con un objeto UserConfiguration que simplemente se serializa hacia y desde un archivo de configuración, casi sin desarrollo involucrado (análisis, envío de material), y tiene su configuración lista para usar en un entorno fuertemente tipado.
fuente
Yo iría con archivos INI, son la opción más amigable para los humanos:
XML puede ser una buena opción, pero no puede vencer la simplicidad y elegancia de INI:
Los INI también se entienden muy bien y son independientes de la plataforma. Probablemente no hay tantas herramientas disponibles para ellos como para archivos XML, porque, bueno, ¿quién necesita una herramienta especializada para leer y editar un archivo INI?
fuente
<window width="600" height="350" />
Mi preferencia son los archivos XML. Son jerárquicos, puede doblarlos a su voluntad de casi cualquier forma imaginable, son bien entendidos, independientes de la plataforma y hay una amplia gama de software disponible para leerlos y escribirlos.
fuente
Para ampliar la sugerencia de Jeff D de YAML , aquí hay una breve introducción.
YAML es similar a JSON (de hecho, JSON es un subconjunto de YAML desde la versión 1.2 del estándar YAML y, por lo tanto, los analizadores YAML pueden analizar JSON válido). A primera vista, la principal diferencia es que YAML (por defecto) usa sangría en lugar de corchetes para mostrar la jerarquía. También hay una notable falta de comillas para las cadenas. Un ejemplo rápido de arriba:
Consulte la página YAML de Wikipedia para obtener mejores ejemplos. Existe soporte para YAML para la mayoría de los idiomas principales (consulte yaml.org para más detalles).
fuente
Olvidó una opción: la base de datos. Esto se usa principalmente en escenarios en los que los usuarios inician sesión en su aplicación cuando su aplicación no puede confiar en el usuario de Windows conectado. Esto es, por ejemplo, cuando su aplicación se ejecuta en una ventana de modo quiosco.
fuente
Mi preferencia personal son los archivos XML:
En la mayoría de los casos, no espero que el usuario tenga que editar sus ajustes de configuración, por lo que el problema de legibilidad humana no es un argumento en este caso.
Si necesitan editarlos, puede proporcionar una herramienta de edición, esto evita que el usuario haga algo tonto con los datos. Si desean restaurar la configuración predeterminada, puede decirles que eliminen el archivo x, lo que la mayoría de los usuarios se sentirán cómodos haciendo.
Tenga en cuenta que aún debe tener cuidado de tener permiso para almacenar su archivo, ya que algunas ubicaciones no tienen acceso de escritura de forma predeterminada en Windows 7, etc.
Los archivos INI son una buena forma estándar de almacenar la configuración y se prueban y prueban, ¡pero me parecen un poco 'Windows 3.1'!
Probablemente la mejor opción si desea que el usuario pueda jugar con sus datos
Yo personalmente me alejaría del registro. Por un lado, no puede garantizar que el usuario tenga los permisos necesarios para leer / escribir en el lugar donde desee almacenar sus datos.
En sistemas operativos más recientes donde la virtualización del registro entra en juego, esto puede causar una gran confusión porque no puede 'ver' la configuración virtualizada; esto nos ha mordido más de una vez donde hemos pasado horas tratando de descubrir por qué algo no funcionaba.
fuente