适用于离线应用的Sync Framework架构

时间:2011-04-30 09:44:45

标签: architecture offline microsoft-sync-framework azure-sql-database

我正在设计一个新的应用程序,其中包含一个中央SQL-Azure数据库和许多(可能是+2000)远程客户端[kiosks]。我需要将一个简单的(10个表)本地SQL CE数据库与Azure数据库同步,并设想每天至少需要进行一次同步 - 可能没有大量的事务需要应用于每个同步中的信息亭,即几个插入,一些更新(通常不需要应用任何更改);目前我也只是设想它将是高手>客户端更新不是双向的。我已经考虑过客户端 - 客户端同步以帮助提高服务器的可扩展性,但不幸的是我的客户端已经表明这可能无法实现,因为自助服务终端只有3G连接且不参与局域网。

为了达到这个目的,我希望使用MS Sync Framework,它可以很好地工作,但是当很多客户端可能同时连接到中央Azure数据库时,我担心潜在的争用以及性能。我可以看到两种可能的解决方案:

1)具有服务器端调度工作队列,该队列在客户端上调用WCF服务,该服务将从客户端启动同步。这对我来说有点过度设计,并为解决方案增加了额外的复杂程度。

2)将每个客户端或批量客户端配置为在一天中的不同时间进行同步 - 这是可行的,但可以成为管理员。负担。

......或者,我是在思考问题/是否存在问题以及交易规模是否可管理。

由于

1 个答案:

答案 0 :(得分:3)

我在Sync Fx论坛上发布了对你的问题的回复,但无论如何都在这里发帖:

而不是让每个客户端直接连接到Azure数据库,我建议构建基于Azure的同步服务。 Sync Fx团队可以在http://blogs.msdn.com/b/sync/archive/2010/10/07/windows-azure-sync-service-demo-available-for-download.aspx

进行此操作

现在关于Atom / OData /非MS平台客户端,Sync Fx v4 CTP已经围绕OData构建了功能(但不是OData本身的一部分),并且包含Silverlight,Windows Phone和其他客户端的示例。遗憾的是,该版本已被推迟,但CTP位将作为代码示例(而非产品版本)发布。

CTP中的另一个选项是OData参考缓存,请查看:http://blogs.msdn.com/b/astoriateam/archive/2011/04/13/reference-data-caching-walkthrough.aspx

使用示例Azure同步服务,您可以轻松地将其定制为适合SQL CE - Azure同步服务 - SQL Azure同步。您只需要调整同步和持续时间的平均大小,这样就可以展开2000个客户端的同步。

您可以探索的另一个选项是点对点同步。

如果您有自助服务终端并且相互连接,您可以让一个自助服务终端与Azure同步并让其他自助服务终端同步到该自助服务终端。