2011-02-14 69 views

回答

4

該設置是一個包含鍵/值對的扁平組織。對於簡單的對象來說,這不是問題,但如果您有豐富的集合,並且不想爲了訪問元素而反序列化列表的開銷,則設置可能會有問題。它們還要求元素是可序列化的,而使用獨立的存儲文件系統,您可以控制序列化並序列化任何內容。此外,您可以選擇序列化策略,例如二進制,JSON,XML或其他。最後,如何有效設置序列化對象是有限制的。我不確定它是什麼,因爲它沒有發佈,但不止一個開發者告訴我,在設置中,大對象或大量對象開始表現不規律,拋出異常或不能正確保持。

PS - 同樣,自從您提到Windows Phone 7以來,設置有限制,而文件系統沒有配額。

0

關閉我的頭頂:

IsolatedStorageSettings通常慢於IsolatedStorage文件訪問和保存。

您無法在設置中保存空值,但您可以創建自己的序列化表示。

使用目錄可以使處理大量文件比爲設置中的對象的鍵需要長或複雜的命名約定容易得多。

在某些情況下,您可能想要引用存儲在IsolatedStorage中的對象。如果它保存在設置中,則無法執行此操作。

我懷疑添加到設置的對象仍然以某種方式序列化(在後臺) - 我的猜測是二進制序列化 - 因爲它們需要保存到磁盤。通過定義你自己的serializiaton,你可以確定這將正常工作/如預期。如果你只是依靠系統來做到這一點,那麼最終會出現意想不到的行爲。如果你有自己的序列化,你對未來和跨平臺兼容性也有一些保證。 (如果這是一個問題)。

+0

DataContractSerializer用於整個內部`Dictionary `的序列化。 – AnthonyWJones 2011-02-14 13:06:57

4

在ApplicationSettings中存儲對象的一個​​大問題是設置的全部內容都被序列化和反序列化在一起。

只要您只訪問一個設置,全部設置反序列化並加載在支持ApplicationSettings的Dictionary<string, object>中。因此,存儲大量設置或存儲需要大量序列化的大型對象並不是一個好選擇。

0

其他沒有提及的另一個重要的一點是,當您通過向市場提交更新版本來更新應用程序時,整個ApplicationSettings將被清除,因爲它假定新應用程序將具有其自己的默認設置。因此,將數據序列化到IsolatedStorage並且不要塞入AppSettings總是一個好主意。