2011-11-06 25 views
5

¡Estoy escribiendo un pequeño servidor de archivos personal con Play! y es mi primera aplicación web. ¿Cuáles son las prácticas recomendadas para almacenar las preferencias que los usuarios pueden modificar a través de un panel de preferencias?Recomendar prácticas para almacenar la configuración transitoria de la aplicación

Mi primera idea fue utilizar un archivo de propiedades en el directorio conf, pero debo ser capaz de modificarlo durante el tiempo de ejecución. ¿Es escribible el directorio conf, sea cual sea la opción de implementación?

¿Hay opciones incorporadas para eso o hay un mejor enfoque?

Respuesta

2

Como dijo Kim Stebel, la solución habitual es utilizar lo que su aplicación ya tiene, que es la mayoría de las veces un motor de base de datos, sea relacional o no. Esto se debe a que la mayoría de las veces, las preferencias del usuario aparecen después de que otros datos persisten.

Pero en su caso, parece que el sistema de archivos es su motor de persistencia, y no parece necesitar transacciones o un rendimiento de lectura/escritura excesivamente bueno para la característica discutida, así que mantendría esa parte lo más simple posible hasta que se necesite algún otro motor de persistencia: simplemente serializaría el objeto de preferencia del usuario a algún formato de texto (JSON o XML viene a la mente) y los guardaré en el sistema de archivos: sin mapeo por ahora, sin elección prematura (e incluso la posibilidad de corromper)^W edite su preferencia de usuario con su editor de texto favorito, directamente en el servidor, sí;)

Dicho esto, hay un montón de buen marco para ese trabajo, en Scala o en el ecosistema de Java.

Para el mapeo XML, no creo que la biblioteca nativa de Scala sea la mejor opción. Es fácil producir una estructura XML con él, pero el mapeo de un objeto XML a Scala es, en el mejor de los casos, horrible. XStream (http://x-stream.github.io/) es bastante bueno para eso, pero tendrá que usar la colección de Java, o agregar la suya (y esa no era mi idea de la 'más simple').

Para el mapeo JSON, hay muchas bibliotecas realmente buenas en Scala. Google y otros stackoverflowers pueden tener más detalles, pero sé que hay por lo menos estos dos:

creo que sirve,

+0

Cuando se trataba de mapear, YAML es lo primero que se me viene a la mente en el contexto del juego. La biblioteca Snakeyaml ya está en su classpath ... Al igual que la biblioteca Gson. – sdespolit

2

La solución habitual sería almacenar la configuración en una base de datos. ¿Hay alguna razón para no usar una base de datos?

+0

base de datos tiene tablas, sólo necesito una asignación de clave y valor, así que a pesar de DB eran una exageración. Si decido usar un DB, podría tener una tabla con una sola fila. ¿Es esta tu sugerencia? – paradigmatic

+0

Sus preguntas sonaron como si tuviera un conjunto de configuraciones por usuario. En el caso de las configuraciones para toda la aplicación, la forma habitual es usar un archivo de configuración. No puedo imaginarme por qué el archivo de configuración no se podría escribir ... –

Cuestiones relacionadas