基于改进网络协议的移动数据同步中间件的实现方法

文档序号:8322323阅读:343来源:国知局
基于改进网络协议的移动数据同步中间件的实现方法
【技术领域】
[0001]本发明属于计算机科学与技术领域,涉及一种网络协议的改进及其中间件的实现方法。
【背景技术】
[0002]在使用移动终端设备时,可能会经常在没有网络信号或者信号很弱的环境下,这样就不具备实时跟中心数据库同步的条件,而且如果移动终端实时连网,对其电量的消耗十分大,会造成移动设备使用时间变短,降低了移动设备和应用的用户使用体验,所以移动数据库不能实时地和中心数据库保持同步,同时,移动终端设备的资源十分有限,因此移动数据库只存贮用户需要的相关数据,不能存贮中心数据库中的所有数据,可见移动数据同步属于一种伪数据同步,它只同步中心数据库中一部分数据,而且移动数据库中的历史数据也需要进行有效管理。
[0003]SyncML同步协议(SyncML Sync Protocol)定义了同步协议的框架结构、基本原理、数据同步过程以及冲突处理方式等。Sync ML协议虽然解决了移动数据同步中的很多问题,但还存在以下不足:一是Sync ML协议规定的数据同步方式,慢同步可能会经常发生,但Sync ML协议没有提供策略来规避慢同步的发生,对于大数据传输过程中,如果突然发生网络连接不上,再次联网时该协议只会通过慢同步的方式来进行数据同步,不能实现数据续传,使大量数据在网络上重复传输,造成网络流量的浪费;二是Sync ML协议只实现了拉式的移动数据同步,没有能实现服务器主动推送的推式的移动数据同步,无法将变化数据及时推送到相关在线移动终端;

【发明内容】

[0004]针对Sync ML协议自身的缺点和解决此类应用中存在的问题,本发明提供一种基于改进网络协议的移动数据同步中间件的实现方法,通过对Sync ML协议进行改进,在Android平台上实现基于改进Sync ML协议的移动数据同步中间件。
[0005]为实现上述目的,本发明采用以下技术方案:
[0006]1.Sync ML协议的改进
[0007](I)对慢同步的改进
[0008]在消息头加入SlowTableLog对象标签。对象包括TableName,Last和Order属性,TableName表示数据表的名称,数值类型为string ;Last表示是否为该业务的最后一个数据表,数值类型为string ;0rder表示数据表在业务中的编号(1,2,…η)。同时,在消息头加入SyncType标签,SyncType标签取值为I时表示一般同步,取值为O时表示慢同步。改进的慢同步过程如下:以移动端存IC的SlowTableLog对象的Last属性为判断依据,如果Last值为空,则移动端发起慢同步,将Order值发送到服务端,从服务端同步编号为Order+Ι的数据表。在服务端,给Order赋值数据表对应的编号,TableName赋值数据表的表名,然后将数据表和SlowTableLog对象传输到移动端,如果是业务的最后一个数据表,除了上述操作外,还需要给Last赋值“last”。移动端如果接收到包括SlowTableLog对象的Last属性为“last”的数据,则在本地更新数据库成功后,将本地存贮的SlowTableLog对象的Last属性设置为“last”,终止数据同步,表示慢同步完成。
[0009](2)对一般同步的改进
[0010]将推送式同步加入到一般同步中,服务器每隔一段时间(比如三分钟)遍历一次BC_ReprareSync表,向该表有记录的移动设备推送同步消息。移动端接收到同步消息后,系统在后台自动发起一般同步请求从服务端同步变化数据。除此之外,用户在非首次登陆时,移动端也会发起一般同步请求,向服务端同步上次变化的数据。对于移动端的变化数据,采用用户手动控制上传的方式实现,避免把没有采集完的部分数据同步到服务器端。通过这种改进,对于同步到移动端的变化数据,极大地提高了其时效性,对于移动端变化的数据,减少了不必要的重复上传,节省了用户的网络流量。具体实现流程图如图1。
[0011](3)对Map指令和Satus指令的改进
[0012]对Map指令表示映射信息的字段进行扩充,建立表BC_Map,表示同一条信息在服务端和移动端的映射信息;新加入字段TableName表示存储数据的数据表的表名,字段DevCode表示设备唯一标识,字段ID表示主键,为int类型且自动增加;在服务器端和移动端都建立表BC_Map,服务端为永久存贮映射信息,移动端为临时性存贮,将移动端的信息发送到服务端后会清空该表数据。通过增加TableName和DevCode字段,实现了用户具有多个设备、多张数据表进行数据同步时,移动端和服务器端映射信息的表示。
[0013]对Status指令进行改进,在保留StateCode属性的基础上,在移动端建立表BC_Status表;同步到移动端的数据在本地更新数据库成功后,把与数据表相关的信息记录到BC_Status表,然后利用Status指令把数据发送到服务端,服务端以此数据为依据,删除服务端BCLPrepareSync表中表示要同步的相关数据,删除成功后服务端向移动端发送状态码StateCode,如果StateCode为10,则移动端清除BC_Status中的数据。
[0014]⑷其它改进
[0015]向消息头SyncHdr中加入UserName标签,表示用户登录名,将消息体的Cred对象标签移到消息头,并且添加Password属性,表示用户登录密码,向消息头添加DeviceInfor标签,表示移动设备的唯一标识。
[0016]2.基于改进后的Sync ML,实现移动数据同步中间件
[0017](I)采用主动推送方式实现服务端推送同步通知消息
[0018]主要是通过数据库中的表BC_RepareSync来实现的,该表中存贮有需要推送信息的移动终端编号(DevCode)、用户标识(UserID)以及中心数据库记录变化数据的表BC_ChangLog的主键(KeyID)和用户所属的角色标识(RoleID)。服务器每隔一段时间(比如三分钟)遍历一次该表,然后向该表中记录的所有移动终端发送同步通知消息。移动终端收到同步消息后,立即向服务器发起同步请求,把中心数据库需要被同步的数据同步到自己的数据库中,并且发送给服务器完成状态信息。服务器根据移动端传来的信息清除BC_RePareSync表中的相关数据,并发送完成状态码给移动端。移动端如果收到完成状态码为10,就会删除该表中相应的数据。
[0019](2)采用推送式同步和拉入式同步相结合的方式进行移动数据同步
[0020]本发明将推送式同步和拉入式同步结合起来,其中推送式同步主要负责向移动终端推送同步通知消息,通知移动端进行数据同步;拉入式同步根据同步通知,主动向服务器发起同步请求进行移动数据同步,包括在特定条件下发起的慢同步,如图2所示。在正常情况下,除了用户登录进入系统外,移动终端都是接收到同步通知消息后才会发起数据同步。本发明对需要同步的数据进行了分类,分为基础信息类、变化记录类和实时采集类三类,基础信息类和变化记录类数据进行服务器到移动端的单向同步,实时采集类数据进行双向同步。
[0021]移动终端第一次连接服务端数据库时,用户名密码验证通过后,进行移动终端唯一编号在服务器端的注册,注册完成后进行慢同步。慢同步只有在对改进Sync ML协议规定的触发条件下才会进行,且按照各个表的编号依次同步,直到所有表的数据都同步完成。本发明也针对数据同步过程中更新数据库中数据时可能会发生冲突的情况,设计出了合理的数据冲突处理方法。
[0022]对于变化数据的获取,在服务器端和移动终端,都采用了行级触发器来实现,数据表一有变化,就会把变化的类型、数据所在表、变化数据唯一标识等信息存贮到表示变化数据的信息表BC_ChangeLog(用于记录服务端和移动端捕获的变化数据)中。
[0023](3)实现移动数据同步中间件
[0024]移动数据同步中间件包括服务端和移动端两部分,如图4所示。其中,
[0025]服务端实现以下功能:
[0026]推送管理:实现服务端推送同步消息到移动终端。
[0027]同步日志管理:实现对服务端中心数据库中变化数据的捕获
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1