【发布时间】:2014-01-10 20:38:53
【问题描述】:
我的同步功能需要从多个客户端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
【问题讨论】: