Estoy diseñando una pequeña herramienta que requeriría un archivo de configuración de algún tipo. El archivo de configuración en mi caso es realmente más una base de datos, pero debe ser ligero, y si es necesario, el usuario final debería encontrarlo fácilmente editable. Sin embargo, también contendrá muchas cosas. (dependiendo de ciertos factores, podría ser 1Mb o más)
Decidí que preferiría usar texto simple, en lugar de intentar usar SQLite o algo así. Sin embargo, con el uso de texto, también tengo que lidiar con la variedad de formatos. Hasta ahora, mis opciones son
- XML
- JSON
- Formato personalizado
Los datos en mi archivo son bastante simples y consisten en la mayoría de las cosas de tipo clave-valor. Entonces, un formato personalizado no sería tan difícil ... pero prefiero no tener que preocuparme por escribir el soporte para él. Nunca he visto JSON utilizado para archivos de configuración. Y XML aumentaría el tamaño del archivo sustancialmente, creo. (También simplemente no me gusta XML en general).
¿Qué debo hacer en este caso?
Factores a considerar:
- Este archivo de configuración se puede cargar en un servicio web (por lo que el tamaño es importante)
- Los usuarios deben poder editarlo a mano si es necesario (la facilidad de edición y lectura es importante)
- Debe poder generar y procesar automáticamente (la velocidad no importa mucho, pero no es demasiado lenta)
- Las "claves" y los "valores" son cadenas simples, pero deben escaparse porque pueden contener cualquier cosa. (Unicode y escapar tiene que funcionar fácilmente)
- Múltiples archivos de configuración. Básicamente, cada archivo de configuración está vinculado a un "proyecto"
and if needed the end-user should find it easily editable. However, it also will contain a lot of things in it. (depending on certain factors, could be 1Mb or more)
. No puedes tener tu pastel y comértelo. Los archivos de 1 MB no son, por definición, fácilmente editables. O es una base de datos (aunque sea pequeña), y luego SQL-lite es una buena opción o es un archivo de configuración (no debe tener 1 MB de configuración).