2010-07-28 39 views
1

我有一個iPhone應用程序正在使用web服務與網站同步。我使用的同步程序如下:關於iPhone和網站同步的想法

  1. 發送需要同步從iPhone到網站
  2. 將項目添加到網站MySql數據庫
  3. 發回需要從網站同步到iPhone項目的項目
  4. 添加在iPhone上的SQLite數據庫項目

所有這一切,用一個請求到服務器來完成。用戶通常只有幾個項目(< 20)同步,但有時用戶可能有2000個項目要同步。將2000個項目添加到MySql數據庫可能需要一些時間。我使用的交易和增加的項目,這樣的事情時,提交的網站上:

mysqlTransaction.BeginTransaction(); 
foreach item sent from iPhone 
{ 
    mysql.CommandText = //Sql query 
    mysql.ExecuteNonQuery(); 
} 
mysqlTransaction.Commit(); 

有時,當用戶有很多項目的增加,這可能需要一個veeery很長一段時間。因此,我的想法是稍微改變同步過程,而不是使用一個大的請求,而是將請求分成塊,可能一次發送和接收50個項目。這會導致更多但更快的請求。你有什麼想法呢?你會如何解決它?使用事務並在服務器上提交是否正確?

+0

我只對事務進行莫名其妙的連接,如果某個查詢失敗,會導致某種腐敗或數據完整性問題。我明白你爲什麼在這裏使用交易,但我不會使用交易,除非你想改變確認。其他人可能會不同意。我不確定。 – Layke 2010-07-28 09:34:58

+0

我在這裏使用事務的想法是使項目的插入速度比不使用事務更快。我錯了嗎? – Mrbiggerm 2010-07-28 09:45:13

回答

1

我會嘗試從「iphone到服務器」和「服務器到iphone」的更新併發和異步如果可能的話。這樣同步會更快,iPhone應用程序不會阻止等待整個過程完成。

如果更新大於給定大小,將更新劃分爲幀也是一個好主意。