繁体   English   中英

将许多客户端的数据同步到服务器(SQL)

[英]Sync Data From Many Clients to Server (SQL)

我的同步功能需要同步来自多个客户端SQL服务器的数据,根据服务器上的业务规则修改数据,然后将数据加载到服务器SQL数据库中。

我当前的解决方案是一个按计划任务运行的控制台应用程序,它比较记录的创建和修改的时间戳,并生成需要更新或从客户端插入到服务器的实体对象。

尽管这种方法似乎有效,但我担心冲突管理或同步期间WCF服务中断,这会导致数据冲突。 我必须解决的想法之一是快照,然后基于该快照进行同步,如果同步完成,则删除快照并使用上次成功导入日期更新Server DB。

我已经研究了Sync Framework,但是却发现了几个在一台服务器上安装多个客户端的示例。 同步的另一个问题是,我不希望不更改任何客户端数据库表架构。 是否有来自客户端数据库的只读示例? 还是在客户端或服务器端修改数据时使用SQL-SQL示例?

作为参考,这里是我用来生成实体对象列表的客户端代码,这些实体对象需要更新或插入到我的服务器数据库中。

 Public Function GetNew(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetNew
    Dim db As New myEntity.DBContext
    Dim z As List(Of INextGen.person) = (From p In db.people Where p.create_timestamp >= StarTime And p.create_timestamp <= EndTime Order By p.create_timestamp Descending Skip Offset Take ChunkSize).ToList()
    Return z
    db.Dispose()
    db = Nothing
End Function

Public Function GetChanged(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetChanged
    Dim db As New myEntity.DBContext
    Dim z As List(Of INextGen.person) = (From p In db.people Order By p.modify_timestamp >= StarTime And p.modify_timestamp <= EndTime Order By p.modify_timestamp Descending Skip Offset Take ChunkSize).ToList()
    Return z
    db.Dispose()
    db = Nothing
End Function

您可能要考虑使用Microsoft Sync Framework 2.1。

数据库同步提供程序是Microsoft®Sync Framework的一部分。 Sync Framework是一个全面的同步平台,使开发人员能够向应用程序,服务和设备添加同步功能。 Sync Framework解决了如何在任何拓扑上使用任何协议同步任何存储中任何类型的数据的问题。 Sync Framework的基础是能够支持任何类型的终结点(例如,设备到桌面,设备到服务器等)之间的数据脱机和协作。

参考文献:
http://msdn.microsoft.com/en-us/library/bb902831.aspx
http://msdn.microsoft.com/en-us/library/bb726002.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM