【问题标题】:Detached Smart Client Syncing分离式智能客户端同步
【发布时间】:2011-01-21 21:49:02
【问题描述】:

我目前正在开发一个应用程序,该应用程序最初将安装在具有轻量级数据库(可能是 SqlLite)的客户端计算机上。

一段时间后,我想添加同一软件的网络版本,然后智能客户端将能够与在线版本同步。

有没有人做过类似的事情,我想知道:

  1. 什么是最好的同步方式,是否有规律?
  2. 是否有任何框架可以处理同步?
  3. 我是否应该从一开始就注意任何问题(可能是安全并发)?
  4. 构建此架构的最佳方式是什么?

提前谢谢...

【问题讨论】:

  • 智能客户端和Web服务器是否在同一个局域网中?或者您是否期望许多智能客户端位于不同的位置并安装一个 Web 服务器?
  • 他们不会在同一个网络上,而是通过互联网与人们从网站下载应用程序。

标签: c# .net synchronization microsoft-sync-framework


【解决方案1】:

因此,Microsoft 的 Sync Framework 将对此有所帮助。 Introduction

一开始就有几个问题很突出。

如果您要先让数据存在于客户端,然后在稍后同步到服务器,您需要考虑当多个客户端都同步到服务器时会发生什么,尤其是。围绕解决冲突。

有一些事件会在服务器端引发以识别何时发生冲突,但您需要决定谁获胜。 (一个在服务器上,一个来自传入的客户端)。根据您在此处选择的操作,第二次同步可能会修改客户端数据。

仔细考虑要同步的内容。如果它是一个联系人数据库,仅同步客户姓名和电话号码是否足够好,或者您是否还需要完整的联系历史记录?

从同步表的角度考虑,使用键值相同的行。即使这是一个带有触发器等的构造表。这使得框架同步的过程更加简单,并且不易出错(需要以不同的顺序同步表)。

如果它是一个开票程序,可能只需要上传订单表,所有相关的发票、历史记录、报告表等都在服务器上更新,而不是在客户端更新它们并同步多个表... .

【讨论】:

  • 我在一些项目中一直使用 Microsoft Sync Framework,我认为这是一个不错的选择。对于轻量级数据库,我建议使用 SqlCE,因为 Sync Framework 开箱即用地支持它。
猜你喜欢
  • 2019-08-17
  • 1970-01-01
  • 2011-07-25
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多