2011-01-05 63 views
0

我有一個網站(幸運我),本網站中的數據訪問是使用像這樣的自定義類實現...傳遞自定義對象到Windows Mobile 6的應用

IList<Thing> things = ThingFactory.GetAll(); 

Thing thing = ThingFactory.Get(1); 

...一切都很好。

我現在被要求開發一個Windows Mobile 6/CF3.5應用程序(Windows窗體)。

該應用程序將從我們的服務器下拉數據並將其存儲在SqlCe/Compact數據庫中以供離線使用。在下次設備停靠時,需要對數據(客戶端或服務器)的任何更改進行同步。

有人可以請我提供一些關於如何向移動應用程序發送數據和從移動應用程序發送數據的指導?我的主要問題是以下可能... ...

[WebMethod] 
public IList<Thing> SyncThings(IList<Thing> thingsThatTheMobileChanged) 
{ 
    ThingFactory.SavedChangedThings(thingsThatTheMobileChanged); 

    return ThingFactory.GetAllThatHaveChangedSinceLastSync(); 
} 

...以及如何消費在客戶端/移動端?

我環顧了一些其他類似的問題發佈在SO上,但我只是沒有得到我的答案!

非常感謝提供任何幫助,

ETFairfax

+0

你的描述是說Windows Mobile 6和Windows Mobile 5的主題。這只是給我們提供了操作系統。你在用什麼框架/語言構建客戶端應用程序?知道這將幫助我們回答你。 – 2011-01-05 13:41:25

+0

嗨請問,它應該是移動6在C#中使用Compact Framework 3.5(我將在一個月內更新)。自發布這個問題以來,我一直在關注ADO.NET的Sync Services。這值得一看嗎? – ETFairfax 2011-01-05 14:12:23

回答

0

你可以嘗試序列化你的對象列表並返回字節數組 PDA將採取這個字節數組並反序列化它。

+0

這正是我最終這樣做的結果。 – ETFairfax 2011-03-07 09:02:06

0

我使用同步功能SQL Server數據庫之間取得了巨大成功。這將更新你的數據庫,只要它連接起來,沒有你的任何要求,開發人員。這對您意味着什麼,而不是應用程序拉動新數據,應用程序只需要從數據庫中獲取對象。您可能會在數據庫記錄中需要某種時間戳記錄,以便知道它們何時更改。
[免責聲明:我寫了我的移動應用程序,大約6年前與Compact SQL Server交談;當移動設備仍然被稱爲PDA]

+0

嗨,謝謝你的回覆。你能告訴我更多關於你用來同步數據的技術/技術嗎?另外,定製同步有多靈活?例如,如果您必須獲取特定部分的數據而不是整個表格? – ETFairfax 2011-01-07 08:20:30

+0

可以僅將表的一部分與數據庫同步。整個事情是SQL Server複製,在這裏閱讀更多關於它:http://msdn.microsoft.com/en-us/library/ms151198.aspx 你的整個瑣事成爲一個數據庫問題。剩下的一個編碼細節是如何處理衝突,即主數據庫和用戶都更新相同的記錄 - 複製應該如何解決這個問題...... – erict 2011-01-07 16:21:39