Windows Phone 的數據存儲方式總結


討論范圍:介於WindowsPhone8的SDK發布在即,出於文章時效的考慮,需要說明本文只討論Windows Phone 7 下的數據存儲方式,但我想內容同樣適用於WindowsPhone8,只是WindowsPhone8會帶來新的數據存儲方式。

 

 一、存儲方式概覽

  1. 本地項目內文件:被編譯成資源文件(Resource)或內容(Content)。
  2. 獨立存儲(Isolated Storage)
  3. 本地數據庫
  4. Web Service/ WCF
  5. Cloud/ Azure

二、詳細介紹

1、本地項目內文件

    可以通過設置文件的生成方式(BuildAction)將文件設置成資源(Resource)被編譯到二進制代碼里,優點是隨時都能用,但是可能導致啟動時加載過慢。在代碼中,可以用Application.GetResourceStream來讀取。一般用這幾種場合:不考慮程序的啟動時間;不用更新資源文件(因為編譯進項目了就別指望了);減少程序的依賴項。  

    可以通過設置文件的生成方式(BuildAction)將文件設置成內容(Content)被編譯進項目文件,但不在二進制代碼里,優點是效率高,能被多個程序包共用。在代碼中,可以用XElement.Load來讀取。一般用這幾種場合:考慮程序的啟動時間;需要更新資源文件(因為編譯進項目了就別指望了)。

2、獨立存儲

    如果要存儲用戶的數據,可以用獨立存儲,在Silverlight和WindowsPhon里都沒有直接存儲系統文件的接口,但是可以用獨立存儲將保存在用戶的設備上。可以用鍵值對的方式(IsolatedStorageSettings類),也可以用文件的方式(IsolatedStorageFile類)

3、本地數據庫

SQLCE:自己家的便攜數據庫格式,(7.1才有的)

SQLITE:第三方的便攜數據庫格式。

通過本人實際使用的感覺發現對多線程的讀寫處理都不怎么好,很容易異常,當然也可能我對其特性理解不夠深入。

4、Web Service

可能有以下幾種格式:

REST,POX,JSON,OData,SOAP。

而存取方式也有以下幾種方式:

Http類:可以直接用HttpWebRequest或WebClient類來調用WebService,通過HTTP協議向WebService發送請求,得到xml或json格式的返回數據。

引用WCF服務:WCF其實是一個WebService框架,支持多種協議(包括http,tcp),支持多種格式(soap,xml,atom)

使用OData客戶端: 其實也叫WCF數據服務,以前叫ADO.NET數據服務,一個以RSET形式存取現有數據的框架。WCF數據服務提供OData格式的數據,比如WindowsPhone與SharePoint交互時,SharePoint提供WCF數據服務,WCF數據服務處理所有http交互,序列化和其他的任務,意思是說App能直接通過http協議對遠程數據執行増刪改查,哪怕跨域也行。OData for WindowsPhone客戶端可能在codeplex上找到

5、Azure

也可以用Windows Azure來存取數據,但是免費的服務是有限制的,Azure在雲服務器上提供持久化的數據存儲,操作方式和WebService差不多。

三、各種方式的適用場合

編譯成資源文件 將只讀數據嵌入二進制程序
編譯成內容文件 不用重新編譯就能更新數據
獨立存儲     存取用戶信息
http類 用第三方的REST或POX服務存取數據
http類 獲取RSS訂閱
用代理類的WCF 從SOAP服務存儲數據  
WCF 從Silverlight中將現有的類發布成服務
OData   存取Odata數據
Azure 存儲大量數據
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM