和有道笔记相似。
两个问题:
1. client在登陆后是可能不联网的,一旦联网的话,本地产生的数据怎么样能够和server端的数据库同步?
客户端和服务器端时间可能是不一致的。
本地也是用数据库存放数据.
假设是notes表
现有字段:
NoteId(自增)
NoteContent(笔记内容)
NoteTime(笔记修改时间)
假如有多个表需要同步又怎么样解决?
2.采用的是TCP传输,本人用的TCPListener和TCPClient写的, 多条记录传输过程中,本人是本人编写格式?(如用逗号,分号间隔)还是采用json?
两个问题:
1. client在登陆后是可能不联网的,一旦联网的话,本地产生的数据怎么样能够和server端的数据库同步?
客户端和服务器端时间可能是不一致的。
本地也是用数据库存放数据.
假设是notes表
现有字段:
NoteId(自增)
NoteContent(笔记内容)
NoteTime(笔记修改时间)
假如有多个表需要同步又怎么样解决?
2.采用的是TCP传输,本人用的TCPListener和TCPClient写的, 多条记录传输过程中,本人是本人编写格式?(如用逗号,分号间隔)还是采用json?
解决方案
5
1.关于两端同步:一般有2种方式
(1):把客户端新增的数据上传到服务器,然后两者合并。把客户端修改和删除的数据上传到服务器,按照业务逻辑(删除服务器端,还是永久保留?)处理,最后把更新后的服务器端数据,下载到客户端。
(2):把客户端的操作记录,原封不动的在服务器端执行一遍。其实就是延迟到有网后执行而已。
2.优先考虑json标准。简单的少量的,用逗号,#之类的还行,稍微复杂或扩展往后就没法维护了。
(1):把客户端新增的数据上传到服务器,然后两者合并。把客户端修改和删除的数据上传到服务器,按照业务逻辑(删除服务器端,还是永久保留?)处理,最后把更新后的服务器端数据,下载到客户端。
(2):把客户端的操作记录,原封不动的在服务器端执行一遍。其实就是延迟到有网后执行而已。
2.优先考虑json标准。简单的少量的,用逗号,#之类的还行,稍微复杂或扩展往后就没法维护了。
5
没有同步过的就是新增呗。你在本地不是有数据库吗?莫非你本人设计点数据结构来看出能否同步过,这么困难吗?
你一次同步一条记录,还是一次同步10条记录,是你本人的事情。
3
1、加一个标记字段,来标识同步情况
2、注意事务控制,即同步成功后再标记
5
自 Fox Software 公司被微软收购后,其首创的 远程视图 就被逐渐淡化了,原因是他妨碍了微软的 远程数据绑定(不过随着 IE 的失势,也逐渐淡化了)
但你至少可以借鉴 jQuery EasyUI 的做法
假如你全部本人思考的话,估计你得放弃这个项目了
原因是事情远比:怎么样判断新增?怎么样判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认? 要复杂的多
至于传输,你都 C/S 了,自然已经有了完备的方案
再说数据格式本来就是取决于你两端的现有处理方式的
但你至少可以借鉴 jQuery EasyUI 的做法
假如你全部本人思考的话,估计你得放弃这个项目了
原因是事情远比:怎么样判断新增?怎么样判断哪些记录已经同步?同步的过程随时可能会中断的,每条都确认? 要复杂的多
至于传输,你都 C/S 了,自然已经有了完备的方案
再说数据格式本来就是取决于你两端的现有处理方式的
2
客户端跟服务器端的时间不一致,怎么样同步?这纯粹是业务问题。
例如说你本人写了一份离职交接清单,是2016年7月17日写的。而人家也写了一份离职交接清单,是2016年7月16日写的。怎么样比对?
不就是看看你写的哪一条没有,然后人家“新增”到它的清单上吗?
这种问题你要本人有点勇气去整理。假如一旦想到业务问题,你就纠结技术;一旦想到技术问题,你纠结业务,那么你真的没有办法真正成为一个专业的开发人员。还处在坐在家里“玩儿一玩儿”个人编程的阶段。这方面其实就是按部就班地先把各种必要的设计文档写好(不必要的文档不要写),然后推进本人的进度就好了。
一看你提的问题是不是问题,就知道你是在家里本人搞“开发”的,还是公司的项目。
例如说你本人写了一份离职交接清单,是2016年7月17日写的。而人家也写了一份离职交接清单,是2016年7月16日写的。怎么样比对?
不就是看看你写的哪一条没有,然后人家“新增”到它的清单上吗?
这种问题你要本人有点勇气去整理。假如一旦想到业务问题,你就纠结技术;一旦想到技术问题,你纠结业务,那么你真的没有办法真正成为一个专业的开发人员。还处在坐在家里“玩儿一玩儿”个人编程的阶段。这方面其实就是按部就班地先把各种必要的设计文档写好(不必要的文档不要写),然后推进本人的进度就好了。
一看你提的问题是不是问题,就知道你是在家里本人搞“开发”的,还是公司的项目。