Haciendo mal: preferencias de la aplicación

Una cosa que ha sido siempre me molesta es la falta de una forma unificada para mantener los ajustes persistentes.

Cuando usted va a instalar una nueva pieza brillante de software, nunca se sabe qué sorpresas que trae. La ubicación y la sintaxis de los archivos de configuración varía entre las aplicaciones y entornos. Echemos un vistazo a los formatos de almacenamiento persistente más utilizados y analizar sus puntos fuertes y débiles. Tenga en cuenta que sólo quiero tratar el tema sólo en el aspecto del uso de escritorio, donde la facilidad de uso y facilidad de mantenimiento no deben ser sacrificados sobre el rendimiento como lo hacemos en el mundo integrado. Además, tenga en cuenta que me estoy centrando principalmente en los formatos utilizados en las distribuciones de escritorio * NIX, porque eso es lo que estoy utilizando principalmente.

Una de las diferencias clave entre muchos formatos se si permiten que los datos de texto con la arbitraria formato y el espaciado o tener un diseño binario fijo. La primera es, obviamente, legible por humanos (y, a veces, se puede editar), éste puede en muchos casos ser más fácil analizado por la máquina

El texto plano Pro:.

  • humano legible

Contra:

    No

  • sintaxis unificada (todo el mundo inventa su propio)
  • No hay manera de contol de la exactitud del contenido del archivo (en comparación con el esquema XML para el que existe una gran cantidad de herramientas y bibliotecas )

XML +

  • puede ser editado por un humano ( hasta cierto punto)
  • definición de la estructura estricta es una parte de una norma (el usuario puede definir los tipos y límites para los valores de variables personalizadas)
  • Con el apoyo de muchas herramientas

  • difícil de leer por un humano
  • ineficiente para analizar (aunque, mejor que un texto sin esquema)

GConf es un sistema de configuración basado en XML para las aplicaciones de GNOME y GTK. Básicamente, hereda todas las ventajas y desventajas del XML.

JSON + />

  • Fácil de leer y editar por un ser humano
  • Fácil API en la mayoría de las bibliotecas (podemos pensar en él, ya sea a partir de un árbol de objetos o como hashmap de HashMaps de HashMaps …)

  • La falta de una función de esquema de control (es decir, tiene una sintaxis formal y podemos compruebe que un JSON es válida, pero no podemos verificar que las estructuras de datos se inicializan con los valores correctos)

Ahora, vamos a hablar de los formatos binarios.

Los formatos personalizados

Registro de Windows + />

  • Es rápido.

  • mayoría de los datos críticos del sistema se mantiene dentro de un solo archivo (bueno, en realidad alrededor de 6 archivos en% windir % System32 config). Un solo fallo significa que el sistema no puede arrancar.
  • Todas las aplicaciones de almacenar sus datos dentro de una base de datos única. Si una aplicación se está ejecutando con «Administrador» (algo así como root, pero para retardados), puede modificar o leer los datos de otras aplicaciones fácilmente. Se trata de un problema de seguridad enorme.
  • Actividad de aplicaciones
  • no se registra (por lo menos, de forma predeterminada). Esto significa que el software malicioso deja rastros incluso después de ser desinstalado lo cual es especialmente cierto de shareware y otra bloatware.
  • Aplicación
  • y registro del sistema no están aislados. No se puede simplemente volver a instalar el sistema sin tener todas las preferencias (como, mantener el directorio home, pero reemplazar los rootfs en * NIX)
  • Sólo hay varios tipos de datos básicos (DWORD, texto, binario) y el usuario no puede introducir sus propios

dconf es un reemplazo para GConf del proyecto GNOME. La única diferencia real está usando un formato binario en lugar de XML. Si bien podría decirse que es más rápido, es totalmente incomprensible para un ser humano, y cuando las cosas van mal, no tengo ni idea de qué hacer. />

+

  • Es más rápido
  • Consume menos espacio

  • Introduce tipos personalizados (como UUID) que significa que cualquier JSON se puede convertir en BSON, pero no al revés .

MessagePack es un formato de serialización binaria que es con el objetivo de ser compatible con BSON mientras es optimizado para el uso de la red
+

  • Ofrece alta relación de compresión que reduce el tráfico de red
  • Viene con el código IDL / serialización para la mayoría de los idiomas principales (C + +, Ruby, Python)
  • Ofertas comprobación de tipos cuando se utiliza con lenguajes de tipo estático
  • Viene con una implementación de RPC que puede ser útil para aplicaciones de red
  • rendimiento, teóricamente, puede ser un poco más bajo que BSON debido al empaquetamiento de bits
Hay, por supuesto, existe una multitud de otros formatos de configuración, pero el más utilizado en un destkop linux son texto plano y GConf. Por lo tanto, soy vago para describir cualquier otra cosa bajo el sol.

Ahora, aquí es lo que pienso desarrolladores de aplicaciones deberían hacer

  • Uso glib/qt4/java incorporados APIs para mantener las preferencias. No reinventar la rueda
  • No rompa el formato de configuración con el tiempo (lo ideal es que usted no sabe nada sobre el formato de configuración si utiliza la API existente)
  • No que sea fácil para los usuarios hacer copias de seguridad de los datos de configuración
Idealmente, me gustaría que todas las aplicaciones (por lo menos, todas las aplicaciones gratuitas y de código abierto en Linux) usarían la misma API para manteniendo las preferencias para que el administrador del sistema puede elegir varios motores, ya sea xml, json, sql o lo que no, sin modificar las aplicaciones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *