在响应期间,使Web服务调用更具交易性和处理网络故障所需的建议是什么?

时间:2009-12-17 11:43:34

标签: asp.net web-services windows-mobile

我在使用.NET Compact框架运行的Windows Mobile 5.0客户端应用程序遇到一些问题,该应用程序使用asp.net 2.0 Web服务同步数据。

以下是执行步骤的列表,然后是我认为问题发生的地方:

  1. 客户端从其SQL Compact Edition数据库收集本地数据,该数据库还没有服务器端主键。
  2. 客户端调用Web服务传递“新”数据以及已存储在已有主键的设备上的其他数据列表(因此Web服务知道已存在的数据!)。
  3. 服务器在我们的中央数据库中插入新数据,中央数据库又为记录授予唯一的服务器端主键。
  4. Web服务调用的响应现在加载了(1)自上次同步后在服务器上集中添加的新数据,(2)自上次同步以来已更改的数据,以便我们可以更新设备上已有的数据和(3)刚刚上传的数据的新分配的服务器端主键。
  5. 客户端存储来自服务器(1)的新数据,更新已更改的数据(2)并记录刚刚上传的数据的服务器端主键(3)。
  6. 我希望以上内容有道理!

    我发现我在设备上收到了一些重复数据,这是由于在向客户端下载响应期间网络连接失败。这样做的原因是服务器正在插入新数据,但是告诉客户端其服务器端主键是什么的数据不会返回到客户端。这导致客户端在下次同步时尝试上传新数据,尽管它已经插入到我们的中央数据库中。

    我无法想到我的中央服务器可以确定客户端是否正确接收到响应的方式,是否有人可以建议任何更好的方法来使整个事务更具交易性?

1 个答案:

答案 0 :(得分:0)

服务器插入数据然后将teh键返回给客户端。然后客户端更新其密钥集。为什么不从客户端添加最终方法调用来告诉服务器它已成功更新其密钥,这会告诉服务器提交事务?