2009-07-25 45 views
1

带SQL 2005的Microsoft Sync Framework?可能吗?似乎暗示OOTB提供者使用SQL2008功能。 我正在寻找一些关于同步项目的快速获胜。 客户端应用程序将在几天内脱机。 将有一个中央服务器,必须是SQL Server 2005. 我可以使用.net 3.5。智能客户端应用程序的同步框架注意事项

基本上,客户端应用程序可以在一周内脱机。当它恢复在线时,它需要同步它的数据。但好处是数据只需要推送到服务器。同步回客户端的东西只是客户端永远不会改变的查找数据。所以这意味着我不关心同步冲突。

为了简化你的情况,这个智能客户端下线,用户调查一些观察数据。他们将数据输入到系统中。笔记本电脑重新连接到网络时,它会将所有数据同步到服务器。还有其他客户也在做同样的事情,但没有人会触及彼此的数据。然后在服务器上有一些报告查看推送到服务器的数据。这也需要使用ClickOnce。

我最大的担忧是客户端处于脱机状态时存在临时版本。此版本可能需要在数据库中添加一个新字段,并在调查中填写一个新字段。 显然,新字段将为空,因为我们无法更新旧数据,所以可以设置为假设。但是当客户端连接并且它的本地数据模式和服务器模式不匹配时,同步框架能够处理这个问题吗?数据被推送到服务器后,它将在本地丢弃。

希望我的问题有道理。

回答

1

我一直在使用微软同步框架来处理碰撞的应用程序,而且它很惨。 * .sdf文件被锁定用于某些模式更改(如删除列等)。

您的场景听起来像Sync Framwork将为您工作,开箱即用...只是不强制任何参照完整性,因为同步框架将导致在这些情况下插入问题。

就更新模式而言,如果您遵循Sync Framework论坛,则会指示您按照表应该查看结尾的方式创建临时表,然后复制数据,然后删除旧表。一旦完成,然后继续,将新表重命名为它应该是的,然后重新连接SQL Server CE中允许您处理同步类的东西。

恕我直言,我将努力从我的应用程序中删除同步功能,因为它不仅仅是一个援助的障碍。

+0

谢谢,欣赏反馈。另外,我发现ClickOnce会自动更新您的架构,无论是否使用同步框架。在我的情况下,我只在中央服务器上添加新的空字段,所以这个作品可以对我很好用 – DarkwingDuck 2009-07-28 11:12:53

+0

ClickOnce如何结束自动更新数据库?我还没有看到这种情况,我非常感兴趣。 – 2009-07-28 19:01:33

+0

因此,我发现ClickOnce只会将一些更改安全地部署到您的紧凑型数据库。例如,删除一列工作正常。但是,添加列实际上会导致所有本地数据被删除。所以我做的是在'同步'过程中,我让应用程序发布其数据,然后调用System.Deployment.CurrentDeployment类,该类有静态方法来更新部署。这对我来说很有帮助。但是,如果您使用WCF作为数据库的代理(这是一个支持的Sync框架方案),那么它可能无法很好地工作,因为您需要对合同进行版本化。 – DarkwingDuck 2009-08-03 09:49:56