我的同步功能需要同步来自多个客户端SQL服务器的数据,根据服务器上的业务规则修改数据,然后将数据加载到服务器SQL数据库中。
我当前的解决方案是作为计划任务运行的控制台应用程序,它比较记录的创建和修改时间戳,并生成需要更新或从客户端插入服务器的实体对象。
虽然这种方法似乎有效但我担心冲突管理,或者在同步过程中WCF服务中断会导致数据冲突。我必须解决这个问题的一个想法是快照然后基于该快照进行同步,如果同步完成则删除快照并使用上次成功导入日期更新服务器数据库。
我已经研究过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
答案 0 :(得分:1)
您可能需要考虑使用Microsoft Sync Framework 2.1。
数据库同步提供程序是Microsoft®SyncFramework的一部分。 Sync Framework是一个全面的同步平台,使开发人员能够为应用程序,服务和设备添加同步功能。 Sync Framework解决了如何使用任何拓扑上的任何协议在任何存储中同步任何类型的数据的问题。 Sync Framework的基础是支持任何类型端点(例如设备到桌面,设备到服务器等)之间的数据脱机和协作的能力。
参考文献:
http://msdn.microsoft.com/en-us/library/bb902831.aspx
http://msdn.microsoft.com/en-us/library/bb726002.aspx