2011-09-05 172 views
1

我想將Azure表存儲中的數據與本地Windows桌面客戶端同步。桌面客戶端應該始終在線工作,因此他必須從ATS下載最新的數據並上傳對本地數據所做的任何更改。與Azure表存儲的本地同步

是否有預先制定的照顧,或者我必須從頭開始編碼?

也許網上有一些我還沒有看到的文章。我認爲Sync Framework是這裏的一種方式,但我沒有發現任何關於Azure表存儲使用情況的具體信息。

+0

你能否詳細說明通過與本地Windows客戶端同步它是什麼意思?您是否希望同步到本地SQL服務器或僅從Windows客戶端訪問ATS數據? – Igorek

+0

@Igorek我試圖闡述。我希望現在它更容易理解。 – Amenti

回答

1

我認爲實際同步數據本身是您的問題中最少的。實際上,在斷開連接的情況下模擬天藍色存儲,以便將大部分代碼從實際實現中抽象出來可能會更具挑戰性。 Azure Table Storage難以模擬。您可以嘗試在本地客戶端桌面上使用SQL Express,並使用PartitionKey,RowKey,TimeStamp和基於xml的BLOB在表格中使用SQL Express以類似ATS的方式存儲對象,但要獲取它們非常困難正確地仿真。

我還沒有看到任何這樣做的技術或框架。您是否需要容量和/或可擴展性,以至於您必須使用Azure表存儲?你可以用SQL Azure來做嗎?在本地桌面客戶端上運行SQL Express,將SQL Azure與SQL Express同步以及在兩個數據存儲之間切換將更加簡單。

+0

感謝您的回答。我的軟件是針對消費者量身定製的,我想存儲數據多租戶(每個用戶有一定的MB)。由於價格較高,我目前確實忽略了SQL Azure。但是你所說的聽起來好像我應該再考慮一遍。我想爲消費者安裝SQL Express雖然有點太多了。也許SQL Compact是一個選項。 – Amenti

0

一種不同的方法是通過一個RESTful服務來公開數據(看看asp.net網頁API)。這個想法是,你會簡單地調出該網址,讓您的數據

GET //yourapi/someresource 

頁眉或可以附加一些數據,以幫助服務的查詢字符串就什麼給你回的決定。在我的情況下,我傳遞設備ID(在設備生成的GUID)和最後一個同步時間戳。

使用這些,您可以在Web服務背後使用一個小型同步管理器,它可以讓您在一段時間後從其他位置更改所有實體。爲了保持所有這一切都同步,我有一個在azure存儲中的同步日誌,具有userId,entityId,deviceId,Timestamp。

通過查詢和更新此表,我可以讓服務器快速告訴我發生了什麼變化,並且速度很快,因爲該分區是每個客戶。

由於我已經抽象出表格存儲,我實際上並不需要將它複製到客戶端,但是我可以存儲我想要的數據。