2010-07-28 44 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应用程序不会阻止等待整个过程完成。

如果更新大于给定大小,将更新划分为帧也是一个好主意。