SYNCML协议用于处理客户端和服务端的数据同步机制。
比如手机上的pushmail,其本质可以理解为客户端和服务端数据同步的实现。
首先,客户端需要进行一个初始化,从server获取全量数据,完成后标识客户端的数据锚点,代表当前client数据的状态。
当服务端收到另一个客户端的数据改动请求,并更新数据后,则需要对其它所有客户端进行sync通知。其它客户端收到通知后,将自己的锚点发送给server,server返回从锚点开始到最新数据点的所有修改日志。客户端根据修改日志重做客户端的数据。
当客户端发生数据变动后,由客户端发起,提交锚点和修改日志给服务端,服务端根据请求,做相应的数据订正,并把服务端接受到的其它客户端的修改变动返回。
当服务端检测到数据冲突后,则返回状态码。由客户端进行决定。包括:1、冲突合并 2、复制数据 3、客户端优先
几个要点:
1、包括client和server,所有数据以“修改日志”的形式,分割为一个个数据单元
2、server的sync notify需要和client进行长连接,从而发起push message通知
3、通信机制可以建立在http协议上,包括客户端和服务端的双向修改,通过http协议的post和response完成。
4、数据同步可能的形式有:client单向, server单向,双向同步,server同步通知