2010-01-08 88 views
1

對於那些熟悉Microsoft Sync Framework的人來說,這個問題適合您。這涉及到應用程序版本控制。比方說,我發佈了1.0版本的軟件,本地數據庫sdf文件是從1.0版本的Web服務創建的,而且生活會持續一段時間,用戶使用該應用程序並將數據放入本地數據庫中,那麼我的軟件的版本2.0出來了,它們是對數據庫(模式)的更改,如新列,新表格,無效更改等...同步框架版本升級問題

這是如何工作的,如果用戶在1.0版本的數據庫中有數據,而且我已經發布了一個新的2.0 Web服務,因爲該軟件的版本2.0已發佈,並且版本1.0數據庫不再能夠與2.0 Web服務同步,我如何從數據庫中獲取數據版本1.0數據庫?更重要的是,如何將每個人都乾淨地更新到2.0版而不會丟失任何1.0數據?

回答

0

你不能拆卸v1。 web服務(http://example.com/sync/v1.0/)。您的所有v1客戶端都會繼續與v1 web服務同步。客戶升級到v2。 sdf通過運行將數據庫升級到v2的部署腳本。在安裝過程中(CREATE,ALTER,DROP語句)。升級後,客戶端同步到v2服務(http://example.com/sync/v2.0/)。

確認所有客戶端升級到v2後,您可以拆除v1。網絡服務。如果客戶數量未知,那麼您必須依靠業務決策來維護v1多久。向上。並行運行2-3個版本的服務並不罕見,以支持舊客戶端。

+0

這是有道理的,但是,這並不意味着我將不得不有不同版本的服務器數據庫。因爲版本1和版本2服務都將從同一個服務器數據庫提供。我如何處理翻譯?我知道這取決於做出了哪些更改,但讓我們假設這是一個巨大的變化。 – 2010-01-08 18:59:05

+0

如果同步服務的ISA部分無法協調,那麼您會咬緊牙關並支持兩個不同的數據庫,並且有一些方法可以在它們之間進行通信(例如複製)。不幸的是,在分佈式系統中,所有模式依賴關係(和Sync Framework引入了一個,就像複製btw一樣)在v +推出時存在此固有問題,原因很簡單,因爲您無法同時升級所有參與者,並且通常甚至不能在可接受的時間窗口內。升級是任何分佈式應用程序中最大的挑戰之一。 – 2010-01-08 19:05:54

1

在我們的項目中,通過WCF使用同步框架,我們支持不同的數據版本。在我們的案例中,我們使用不同的syncServerProviders,具體取決於客戶端使用的數據版本。 如果數據庫模式發生變化,您可以手動編寫em來配置您的同步提供程序,以僅選擇/更新客戶端數據版本支持的列。

+1

酷故事兄弟。正是我需要的,它的工作原理。 – 2012-01-13 14:16:52