2011-11-06 33 views
5

我正在用Play寫一個小型的個人文件服務器!這是我的第一個Web應用程序。存儲偏好的建議做法是什麼,用戶可以通過偏好面板進行修改。推薦存儲應用程序瞬態配置的做法

我的第一個想法是使用conf目錄中的屬性文件,但我必須能夠在運行時對其進行修改。無論部署選項如何,conf目錄是否可寫?

是否有內置選項或者是否有更好的方法?

回答

2

正如Kim Stebel所說,通常的解決方案是使用應用程序已有的東西,這是大多數情況下數據庫引擎是關係型的。這是因爲大多數情況下,用戶偏好會在其他一些已經存在的數據之後出現。

但在你的情況下,似乎文件系統是你的持久性引擎,你似乎不需要交易或討論功能的過度良好的讀/寫性能,所以我會保持該部分最簡單的可能直到需要其他持久性引擎爲止:我只是將用戶偏好對象序列化爲某種文本格式(想到JSON或XML)並將它們保存在文件系統中:現在不映射地獄,沒有過早的選擇(甚至可能破壞^ W用你最喜歡的文本編輯器直接在服務器上編輯你的用戶偏好,是的;)

這就是說,在Scala或Java生態系統中有很多好的框架。

對於XML映射,我沒有事斯卡拉本地庫是最好的選擇。用它來生成XML結構很容易,但從XML到Scala對象的映射最好是可怕的。 XStream(http://x-stream.github.io/)對此非常有用,但是您將不得不使用Java集合,或者添加自己的(這不是我最'簡單'的想法)。

對於JSON映射,Scala中有幾個非常好的庫。谷歌和其他stackoverflowers可能有更多的細節,但我知道至少有兩個:

希望它能幫助,

+0

當涉及到映射時,YAML是遊戲中首先想到的。 Snakeyaml庫已經在你的類路徑中了......和Gson庫一樣。 – sdespolit

2

通常的解決方案是將設置存儲在數據庫中。有沒有理由不使用數據庫?

+0

數據庫有表,我只需要一個鍵 - 值映射,所以我雖然DB是矯枉過正。如果我決定使用數據庫,我可以有一個單行的表。這是你的建議嗎? – paradigmatic

+0

你的問題聽起來像你有一套每個用戶的設置。在應用程序範圍設置的情況下,通常的方法是使用配置文件。我無法想象配置文件爲什麼不可寫... –

相關問題