发明内容
本发明的目的在于克服现有技术的缺陷,提供一种客户端的布局设定与服务器同步存储的方法及其系统。
为实现上述目的,本发明采用以下技术方案:
客户端的布局设定与服务器同步存储的方法,该方法是用户在某一客户端登陆启动时,与服务器通讯连接,从服务器读取该用户的布局设定云数据及其云时间戳,与存储于客户端本地的布局设定本地数据及其本地时间戳相比较:
若布局设定云数据不同于布局设定本地数据,且云时间戳晚于本地时间戳,则进行布局设定的下载更新;
若云时间戳早于本地时间戳,不管布局设定云数据是否与布局设定本地数据相同,均不进行布局设定的下载更新。
其进一步技术方案为:所述的下载更新为独立进程,不占用客户端正常的工作进程;下载后的布局设定数据存储于缓存空间,若客户端的工作进程正在运行中,待客户端的工作进程结束时,进行客户端本地的布局设定的更新。
其进一步技术方案为:用户在客户端运行过程中,记录布局设定数据的变化,若关闭客户端时,其布局设定数据不同于启动时,或下载更新之后经过了再次修改,用户可选择将最新的布局设定本地数据上传更新至服务器或不上传更新。
其进一步技术方案为:用户在关闭客户端时,将最新的布局设定本地数据及其本地时间戳与服务器的的布局设定云数据及其云时间戳相比较,若布局设定云数据不同于布局设定本地数据,且云时间戳早于本地时间戳,则进行布局设定的上传更新。
其进一步技术方案为:客户端设有布局设定数据的序列化构件;布局设定本地数据与布局设定云数据均为序列化的二进制代码数据;布局设定本地数据经由序列化构件进行序列化之再上传更新;布局设定云数据下载之后,经由序列化构件进行反序列化之后,再进行本地布局设定的更新;其中,布局设定包括窗口布局和组件模板的设定。
本发明客户端的布局设定与服务器同步存储的系统,该系统包括服务器,及与服务器通讯连接的若干个客户端,每一个客户端均包括下载更新模块;所述的下载更新模块用于:
任一用户在任一客户端登陆启动时,与服务器通讯连接,从服务器读取该用户的布局设定云数据及其云时间戳,与存储于客户端本地的布局设定本地数据及其本地时间戳相比较:
若布局设定云数据不同于布局设定本地数据,且云时间戳晚于本地时间戳,则进行布局设定的下载更新;
若云时间戳早于本地时间戳,不管布局设定云数据是否与布局设定本地数据相同,均不进行布局设定的下载更新。
其进一步技术方案为:所述的下载更新模块为独立进程模块,不同于客户端正常的工作进程模块;下载后的布局设定数据存储于缓存模块,若客户端的工作进程正在运行中,待客户端的工作进程结束时,进行客户端本地的布局设定本地数据的更新。
其进一步技术方案为:还包括上传更新模块,所述的上传更新模块用于用户在客户端运行过程中,记录布局设定数据的变化,若关闭客户端时,其布局设定数据不同于启动时,或下载更新之后经过了再次修改,用户可选择将最新的布局设定本地数据上传更新至服务器或不上传更新。
其进一步技术方案为:还包括上传更新模块,所述的上传更新模块用于用户在关闭客户端时,将最新的布局设定本地数据及其本地时间戳与服务器的的布局设定云数据及其云时间戳相比较,若布局设定云数据不同于布局设定本地数据,且云时间戳早于本地时间戳,则进行布局设定的上传更新。
其进一步技术方案为:客户端设有布局设定数据的序列化构件;布局设定本地数据与布局设定云数据均为序列化的二进制代码数据;还包括序列化模块和反序列化模块,所述的序列化模块用于布局设定本地数据经由序列化构件进行序列化之再上传更新;,所述的反序列化模块用于布局设定云数据下载之后,经由序列化构件进行反序列化之后,再进行本地布局设定的更新;其中,布局设定包括窗口布局和组件模板的设定。
本发明与现有技术相比的有益效果是:本发明为信息交互系统中的每个用户定义了布局设定数据,用户在任一客户端登陆时均会通过时间戳的比较时,来判断云数据和本地数据中哪一个属于最新的数据,选择最新的数据进行窗口布局和组件模板的显示,从而使得每个用户在任一客户端登陆时,均可以自行显示自己原有的布局设定,有利于用户保持一致的操作方式,提高用户对信息交互系统的操作速度,节省时间,提高工作效率。本发明可以用于各种信息交互系统,比如即时通讯的信息交互系统,又比如用于金融证券的交易数据处理的信息交互系统。
下面结合附图和具体实施例对本发明作进一步描述。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
本发明客户端的布局设定与服务器同步存储的方法,该方法是用户在某一客户端登陆启动时,与服务器通讯连接,从服务器读取该用户的布局设定云数据及其云时间戳,与存储于客户端本地的布局设定本地数据及其本地时间戳相比较:
若布局设定云数据不同于布局设定本地数据,且云时间戳晚于本地时间戳,则进行布局设定的下载更新;
若云时间戳早于本地时间戳,不管布局设定云数据是否与布局设定本地数据相同,均不进行布局设定的下载更新。
下载更新为独立进程,不占用客户端正常的工作进程;下载后的布局设定数据存储于缓存空间,若客户端的工作进程正在运行中,待客户端的工作进程结束时,进行客户端本地的布局设定的更新。通过新建与程序进同级的独立进程上传数据,相对于在当前进程的优点是:如果当前进程正在上传数据时,用户主动退出程序,可导致数据上传不完整。通过独立进程,处理与用户交互的进程的退出不影响上传进程传输数据,保证数据能正常、完整地上传到服务器上。
用户在客户端运行过程中,记录布局设定数据的变化,若关闭客户端时,其布局设定数据不同于启动时,或下载更新之后经过了再次修改,用户可选择将最新的布局设定本地数据上传更新至服务器或不上传更新。
客户端设有布局设定数据的序列化构件;布局设定本地数据与布局设定云数据均为序列化的二进制代码数据;布局设定本地数据经由序列化构件进行序列化之再上传更新;布局设定云数据下载之后,经由序列化构件进行反序列化之后,再进行本地布局设定的更新;其中,布局设定包括窗口布局和组件模板的设定。
结合图1和图2,以流程图的方式,对本发明客户端的布局设定与服务器同步存储的方法更进一步地了解。图1为客户端的布局设定数据进行首次上传的过程:
第一步,客户端启动,
第二步,上传进程启动(从硬件上可以理解为上传模块);
第三步,上传进程记录客户端程序模板(或称为模板组件)和窗口布局的设定,也即记录客户的布局设定数据;
第四步,数据序列化并打上时间戳,即将在布局设定数据进行二进制数据的序列化处理,并在其中加载时间戳;
第五步,数据上传至服务器,即加载了时间戳的布局设定数据上传至服务器;
第六步,上传服务器结束,即布局设定数据上传至服务器之后结束整个上传过程。
其中,通过自定义高效、存储空间小的序列化方案,实现快速云同步。以直接读写内存的方式来实现数据的存储,能达到高效而且存储空间小的目的。数据对象存储方式可如下所示(二进制流):
00010000 00000001 00010010 100010101000011…1010
对象类型 对象版本 对象后续长度 对象的实际数据
用这样的方式来代表模板布局的内容,进行了二进制编码,以节省传输数据量和存储空间。普通数据格式存储,占用的存储空间量大于二进制数据的存储,二进制数据存储在传输的时候,是可以跨平台的,收到到数据解压,不会因平台/操作系统等原因,导致数据不一致或出错的问题。
图2为从服务器上将布局设定数据下载至客户端的的过程:
第一步,客户端启动;
第二步,云同步进程启动(从硬件上可以理解为下载同步模块);
第三步,拉取模板布局数据,即从服务器下载布局设定云数据;
第四步,反序列化从服务器接收到的数据,即对下载好的布局设定云数据(二进制代码数据)按照序列化规则进行反序列化;反序列化是指将服务器数据转化为二进制流传输,客户端将二进制流序列还原为程序可理解的数据的过程,读取模板、布局的对象,将选择应用的模板、布局数据复制为当前使用的模板、布局数据,顺序解释序列化的对象;本步骤是还原过程,因为在前面的上传至云服务器之前,将模板布局等设计内容进行了序死化处理,形成底层数据,使其占用数据空间少,并便于快捷上传与下载;
第五步,对比数据的本地与服务器时间戳,也即将下载好的布局设定云数据与布局设定本地数据的时间戳相比较,判断是否需要更新:若布局设定云数据不同于布局设定本地数据,且云时间戳晚于本地时间戳,则进行布局设定的下载更新,进入第六步;若云时间戳早于本地时间戳,不管布局设定云数据是否与布局设定本地数据相同,均不进行布局设定的下载更新,进入第九步;
第六步,判断旧模板布局是否在使用中,如果是进入第七步,如果不是则进入第八步;
第七步,等待本地模板及布局退出使用;本步骤是用于解决二种数据的冲突问题,也即:当新模板已下载完成,且旧模板在使用中,此时更新模板会引发异常,所以当旧模版需要更新且正在使用中时,本地模板不会改变,当旧模板停止使用,退出模板窗口或关闭程序时,再进行模板的替换操作;
第八步,更新本地模板布局信息,即将下载好的布局设定云数据覆盖原有的布局设定本地数据;
第九步,本地更新结束。
于其它实施例中,上传更新可以采用另外一种工作方式,即:用户在关闭客户端时,将最新的布局设定本地数据及其本地时间戳与服务器的的布局设定云数据及其云时间戳相比较,若布局设定云数据不同于布局设定本地数据,且云时间戳早于本地时间戳,则进行布局设定的上传更新。
从结构上描述,本发明客户端的布局设定与服务器同步存储的系统,包括服务器,及与服务器通讯连接的若干个客户端,每一个客户端均包括下载更新模块;下载更新模块用于:
任一用户在任一客户端登陆启动时,与服务器通讯连接,从服务器读取该用户的布局设定云数据及其云时间戳,与存储于客户端本地的布局设定本地数据及其本地时间戳相比较:
若布局设定云数据不同于布局设定本地数据,且云时间戳晚于本地时间戳,则进行布局设定的下载更新;
若云时间戳早于本地时间戳,不管布局设定云数据是否与布局设定本地数据相同,均不进行布局设定的下载更新。
下载更新模块为独立进程模块,不同于客户端正常的工作进程模块;下载后的布局设定数据存储于缓存模块,若客户端的工作进程正在运行中,待客户端的工作进程结束时,进行客户端本地的布局设定本地数据的更新。
还包括上传更新模块,所述的上传更新模块用于用户在关闭客户端时,将最新的布局设定本地数据及其本地时间戳与服务器的的布局设定云数据及其云时间戳相比较,若布局设定云数据不同于布局设定本地数据,且云时间戳早于本地时间戳,则进行布局设定的上传更新。
客户端设有布局设定数据的序列化构件;布局设定本地数据与布局设定云数据均为序列化的二进制代码数据;还包括序列化模块和反序列化模块,所述的序列化模块用于布局设定本地数据经由序列化构件进行序列化之再上传更新;,所述的反序列化模块用于布局设定云数据下载之后,经由序列化构件进行反序列化之后,再进行本地布局设定的更新;其中,布局设定包括窗口布局和组件模板的设定。
于其它实施例中,还包括的上传更新模块采用另外一种工作方式,即:上传更新模块用于用户在客户端运行过程中,记录布局设定数据的变化,若关闭客户端时,其布局设定数据不同于启动时,或下载更新之后经过了再次修改,用户可选择将最新的布局设定本地数据上传更新至服务器或不上传更新。
综上所述,本发明为信息交互系统中的每个用户定义了布局设定数据,用户在任一客户端登陆时均会通过时间戳的比较时,来判断云数据和本地数据中哪一个属于最新的数据,选择最新的数据进行窗口布局和组件模板的显示,从而使得每个用户在任一客户端登陆时,均可以自行显示自己原有的布局设定,有利于用户保持一致的操作方式,提高用户对信息交互系统的操作速度,节省时间,提高工作效率。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。