C/S模式下的,客户端和服务器数据同步问题,类似有道笔记

will_stier 2016-07-17 02:05:47
和有道笔记类似。
两个问题:
1. client在登陆后是可能不联网的,一旦联网的话,本地产生的数据如何能够和server端的数据库同步?
客户端和服务器端时间可能是不一致的。
本地也是用数据库存放数据.
假设是notes表
现有字段:
NoteId(自增)
NoteContent(笔记内容)
NoteTime(笔记修改时间)

如果有多个表需要同步又如何解决?
2.采用的是TCP传输,我用的TCPListener和TCPClient写的, 多条记录传输过程中,我是自己编写格式?(如用逗号,分号间隔)还是采用json?
...全文
308 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a584901061 2016-11-08
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
客户端跟服务器端的时间不一致,如何同步?这纯粹是业务问题。 比如说你自己写了一份离职交接清单,是2016年7月17日写的。而人家也写了一份离职交接清单,是2016年7月16日写的。如何比对? 不就是看看你写的哪一条没有,然后人家“新增”到它的清单上吗? 这种问题你要自己有点勇气去整理。如果一旦想到业务问题,你就纠结技术;一旦想到技术问题,你纠结业务,那么你真的没有办法真正成为一个专业的开发人员。还处在坐在家里“玩儿一玩儿”个人编程的阶段。这方面其实就是按部就班地先把各种必要的设计文档写好(不必要的文档不要写),然后推进自己的进度就好了。 一看你提的问题是不是问题,就知道你是在家里自己搞“开发”的,还是公司的项目。
那么对于 多个Client向Server发送数据,同时Server向不同的Client分发数据。 要求3s以内数据达成一致。怎么处理。
will_stier 2016-07-17
  • 打赏
  • 举报
回复
我主要是想看看有没有更好的思路。我采用的办法是增加字段,标记更新状态。
  • 打赏
  • 举报
回复
客户端跟服务器端的时间不一致,如何同步?这纯粹是业务问题。 比如说你自己写了一份离职交接清单,是2016年7月17日写的。而人家也写了一份离职交接清单,是2016年7月16日写的。如何比对? 不就是看看你写的哪一条没有,然后人家“新增”到它的清单上吗? 这种问题你要自己有点勇气去整理。如果一旦想到业务问题,你就纠结技术;一旦想到技术问题,你纠结业务,那么你真的没有办法真正成为一个专业的开发人员。还处在坐在家里“玩儿一玩儿”个人编程的阶段。这方面其实就是按部就班地先把各种必要的设计文档写好(不必要的文档不要写),然后推进自己的进度就好了。 一看你提的问题是不是问题,就知道你是在家里自己搞“开发”的,还是公司的项目。
xuzuning 2016-07-17
  • 打赏
  • 举报
回复
自 Fox Software 公司被微软收购后,其首创的 远程视图 就被逐渐淡化了,因为他妨碍了微软的 远程数据绑定(不过随着 IE 的失势,也逐渐淡化了) 但你至少可以借鉴 jQuery EasyUI 的做法 如果你全部自己思考的话,估计你得放弃这个项目了 因为事情远比:如何判断新增?如何判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认? 要复杂的多 至于传输,你都 C/S 了,自然已经有了完备的方案 再说数据格式本来就是取决于你两端的现有处理方式的
圣殿骑士18 2016-07-17
  • 打赏
  • 举报
回复
引用 2 楼 will_stier 的回复:
[quote=引用 1 楼 zhi_ai_yaya 的回复:] 1.关于两端同步:一般有2种方式 (1):把客户端新增的数据上传到服务器,然后两者合并。把客户端修改和删除的数据上传到服务器,按照业务逻辑(删除服务器端,还是永久保留?)处理,最后把更新后的服务器端数据,下载到客户端。 (2):把客户端的操作记录,原封不动的在服务器端执行一遍。其实就是延迟到有网后执行而已。 2.优先考虑json标准。简单的少量的,用逗号,#之类的还行,稍微复杂或扩展往后就没法维护了。
1.如何判断新增?如何判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认?[/quote] 1、加一个标记字段,来标识同步情况 2、注意事务控制,即同步成功后再标记
  • 打赏
  • 举报
回复
引用 2 楼 will_stier 的回复:
1.如何判断新增?如何判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认?
没有同步过的就是新增呗。你在本地不是有数据库吗?难道你自己设计点数据结构来看出是否同步过,这么困难吗? 你一次同步一条记录,还是一次同步10条记录,是你自己的事情。
  • 打赏
  • 举报
回复
第一个问题,是业务问题。你应该问自己。 第二个问题,并没有什么差别。如果没有什么实质技术问题,你还是赶紧选择一个方式实现,少纠结技术。
will_stier 2016-07-17
  • 打赏
  • 举报
回复
引用 1 楼 zhi_ai_yaya 的回复:
1.关于两端同步:一般有2种方式 (1):把客户端新增的数据上传到服务器,然后两者合并。把客户端修改和删除的数据上传到服务器,按照业务逻辑(删除服务器端,还是永久保留?)处理,最后把更新后的服务器端数据,下载到客户端。 (2):把客户端的操作记录,原封不动的在服务器端执行一遍。其实就是延迟到有网后执行而已。 2.优先考虑json标准。简单的少量的,用逗号,#之类的还行,稍微复杂或扩展往后就没法维护了。
1.如何判断新增?如何判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认?
我叫小菜菜 2016-07-17
  • 打赏
  • 举报
回复
1.关于两端同步:一般有2种方式 (1):把客户端新增的数据上传到服务器,然后两者合并。把客户端修改和删除的数据上传到服务器,按照业务逻辑(删除服务器端,还是永久保留?)处理,最后把更新后的服务器端数据,下载到客户端。 (2):把客户端的操作记录,原封不动的在服务器端执行一遍。其实就是延迟到有网后执行而已。 2.优先考虑json标准。简单的少量的,用逗号,#之类的还行,稍微复杂或扩展往后就没法维护了。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧