2011-11-06 5 views
5

Sto scrivendo un piccolo file server personale con Play! ed è la mia prima applicazione web. Quali sono le pratiche consigliate per memorizzare le preferenze che gli utenti possono modificare attraverso un pannello delle preferenze.Consiglia pratiche per la memorizzazione della configurazione transitoria dell'applicazione

La mia prima idea era di utilizzare un file di proprietà nella directory conf, ma devo essere in grado di modificarlo durante il runtime. La directory conf è scrivibile, indipendentemente dall'opzione di distribuzione?

Esistono opzioni integrate o esiste un approccio migliore?

risposta

2

Come detto da Kim Stebel, la solita soluzione consiste nell'utilizzare ciò che l'applicazione ha già, che è il più delle volte un motore di database, essendo relazionale o meno. Questo perché la maggior parte delle volte le preferenze dell'utente arrivano dopo alcuni altri dati in cui sono già persistenti.

Ma nel tuo caso, sembra che il file system sia il tuo motore di persistenza, e non sembra che ti servano transazioni o prestazioni di lettura/scrittura eccessivamente buone per la funzionalità discussa, quindi terrei la parte il più semplice possibile fino a quando non sarà necessario un altro motore di persistenza: serializzerò l'oggetto preferenza utente su un formato testo (JSON o XML mi viene in mente) e li salverò nel filesystem: nessuna mappatura infernale per ora, nessuna scelta prematura (e persino la possibilità di corrompere^W modifica le preferenze dell'utente con il tuo editor di testo preferito, direttamente sul server, sì;)

Detto questo, c'è un buon numero di framework per quel lavoro, in Scala o dall'ecosistema Java.

Per la mappatura XML, la libreria nativa di Scala non è la scelta migliore. È facile produrre una struttura XML con esso, ma la mappatura da XML a oggetto Scala è al massimo orribile. XStream (http://x-stream.github.io/) è abbastanza buono, ma dovrai utilizzare la raccolta Java o aggiungere la tua (e questa non era la mia idea del "più semplice").

Per la mappatura JSON, esistono diverse librerie molto utili in Scala. Google e altri stackoverflowers possono avere maggiori dettagli, ma so che c'è almeno questi due:

Speranza che aiuta,

+0

Quando si trattava di mappare, YAML è il primo che mi è venuto in mente nel contesto del gioco. La libreria Snakeyaml è già sul classpath ... Come la libreria Gson. – sdespolit

2

La soluzione usuale sarebbe quella di memorizzare le impostazioni in un database. C'è qualche ragione per non usare un database?

+0

Database hanno tavoli, ho solo bisogno di una mappatura chiave-valore, così ho pensato di DB fosse eccessivo. Se decido di utilizzare un DB, potrei avere una tabella con una singola riga. È questo il tuo suggerimento? – paradigmatic

+0

Le tue domande hanno fatto sembrare che tu abbia un set di impostazioni per utente. In caso di impostazioni a livello di applicazione, il modo usuale è usare un file di configurazione. Non riesco a immaginare perché il file di configurazione non sia scrivibile ... –

Problemi correlati