一种协作方法、服务器、客户端与系统的制作方法

文档序号:7776402阅读:131来源:国知局
一种协作方法、服务器、客户端与系统的制作方法
【专利摘要】本发明公开了一种协作方法、服务器、客户端与系统。该方法包括:服务器接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据;服务器将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述当前应用对象的基础上完成业务操作。本发明提供的技术方案,通过序列化应用对象的手段,实现客户端之间的协作,且权限的转移仅仅在当前应用系统内部,不会对客户端操作系统和其他应用程序造成任何威胁,提高了协作双方信息的安全性。
【专利说明】一种协作方法、服务器、客户端与系统
【技术领域】
[0001]本发明涉及远程协作【技术领域】,特别是涉及一种协作方法、服务器、客户端与系统。
【背景技术】
[0002]协作是指多个角色在实现共同目标的过程中,相互之间的协调与配合,在计算机领域,协作的角色可以是计算机的用户,他们依赖网络、服务器、客户端等设备,共同完成某项业务功能。比如在银行业务领域中,远程授权是典型的客户端协作场景:A员工在做某“大额”业务操作,他先输入一些数据,接下来需要B (上级主管,他坐在另一台电脑前)授权即确认他已经看过这些数据,如果后续需要A进行操作,则B需要输入一些身份信息以指示A在获得授权后继续后续工作。
[0003]现有的协作技术都是利用操作系统及网络协议的支持,从而达到与远程用户协作的目的。主要方式包括利用Windows系统自带的远程协作功能或利用第三方软件实现远程协作功能。无论是Windows自带的“远程桌面连接”还是第三方软件提供“远程协助”,在系统层实现方面,被控客户端需要将整个计算机权限完全转移,包括文件、程序等资源。在协作操作时,被控客户端由于没有计算机操作权限导致无法进行其他业务操作而处于等待状态,利用Windows系统自带的远程协作功能时,被控客户端的显示屏为黑屏,无法看见协作端所进行的操作内容。另外,采用第三方软件实现远程协作功能时,如果第三方受到恶意攻击,与之通信的企业内部数据就可能被窃取。所以,对于安全要求极高的企业来说,现有的远程协作方式均存在较高的安全隐患。

【发明内容】

[0004]为解决上述技术问题,本发明实施例提供一种协作方法、服务器、客户端与系统,以解决现有协作技术安全隐患较高,不能适用于比如银行等对安全级别要求较高的大型企业的技术问题。本发明提供技术方案如下:
[0005]一种协作方法,包括:
[0006]服务器接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据;
[0007]服务器将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述当前应用对象的基础上完成业务操作。
[0008]本发明还提供一种服务器,所述服务器包括:
[0009]第一接收模块,用于接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据;[0010]第一发送模块,用于将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0011]本发明还提供一种协作方法,所述方法包括:
[0012]协作发起端将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0013]协作发起端向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;以便服务器将第一消息发送到所述用户名对应的协作受理客户端,以便协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0014]本发明还提供一种客户端,所述客户端包括:
[0015]第一序列化模块,用于将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0016]第一数据发送模块,用于向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;以便服务器将第一消息发送到所述用户名对应的协作受理客户端,以便协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0017]本发明还提供一种协作方法,包括:
[0018]协作受理客户端接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据;
[0019]协作受理客户端对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0020]在所述第一状态下的当前应用对象的基础上完成业务操作。
[0021]本发明还提供一种客户端,包括:
[0022]第二数据接收模块,用于接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据;
[0023]第二反序列化模块,用于对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0024]执行模块,用于在所述第一状态下的当前应用对象的基础上完成业务操作。
[0025]本发明还提供一种客户端协作系统,所述系统包括:
[0026]如上述任一所述的服务器、如上述任一所述的客户端和如上述任一所述的客户端。
[0027]由以上本发明实施例提供的技术方案可见,协作发起客户端与协作受理客户端在进行协作时,协作发起客户端以服务器为中介,将应用对象序列化之后由服务器转发到协作受理客户端,协作受理客户端将序列化数据进行反序列化操作即可还原出应用对象。
[0028]对于协作受理客户端来说,其具有权限操作的仅仅是服务器转发的序列化数据对应的应用对象,其他的资源对于协作受理客户端来说并不可见,对应的操作权限无需转移,应用的操作权限是否转移由协作发起客户端决定,而且操作权限的转移局限在当前的应用对象,不会对客户端操作系统中的其他应用程序造成任何威胁;协作过程不涉及第三方应用软件,可以避免因第三方受到恶意攻击,导致与之通信的企业内部数据被窃取的情况,提高了业务操作的安全性。
[0029]进一步的,在现有技术中,实现协作时,需要实时传输鼠标操作,程序运行以及屏幕变化等数据,对网络带宽要求比较高,在协作过程中,经常出现操作延时和中断的情况;现有的协作模式都是基于点对点的通信方式,需要两台客户端能够直接通信并且保持连接状态,有些协作软件需要要求通过防火墙并且做相应的端口映射,确保协作的计算机之间网络连通。而在本发明中,进行协作的客户端之间并不需要实时传输鼠标操作,程序运行以及屏幕变化等数据,只需要将业务相关的某个状态下的应用对象序列化后进行传输即可,节约了大量网络资源;其次,本发明中应用对象状态的传输借助于服务器中转,协作的客户端之间并不需要直接通信并且保持连接状态,只要保证与服务器之间的通信就可以,克服了客户端只能进行点对点的协作的局限,可以将客户端协作扩展到分布式环境中;业务应用具有普适性。只要是在该客户端系统上开发运行的应用,即可在客户端实现远程协作。
【专利附图】

【附图说明】
[0030]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0031]图1为本发明实施例一种协作方法实施例1的流程图;
[0032]图2为本发明实施例一种协作方法实施例2的流程图;
[0033]图3为本发明实施例一种协作方法实施例3的流程图;
[0034]图4为本发明实施例一种协作方法实施例4的流程图;
[0035]图5为本发明实施例序列化过程信号流图;
[0036]图6为本发明实施例一种协作方法实施例5的流程图;
[0037]图7为本发明实施例一种协作方法实施例6的流程图;
[0038]图8为本发明实施例反序列化过程信号流图;
[0039]图9为本发明实施例一种协作方法实施例7的流程图;
[0040]图10为本发明实施例一种服务器实施例1的结构示意图;
[0041]图11为本发明实施例一种服务器实施例2的结构示意图;
[0042]图12为本发明实施例一种客户端实施例1的结构示意图;
[0043]图13为本发明实施例一种客户端实施例2的结构示意图;
[0044]图14为本发明实施例一种协作系统实施例的结构示意图;
[0045]图15为本发明实施例一种协作方法在一种可能的应用场景下基于的框架结构;
[0046]图16为图15所示框架下对应的序列化和反序列化信号流图。
【具体实施方式】
[0047]为了使本【技术领域】的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
[0048]如图1所示,为本发明实施例一种协作方法实施例1的流程图,本实施例以服务器为执行主体进行说明,具体可以包括如下步骤:
[0049]SlOl:服务器接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息;
[0050]所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据,对于当前应用对象来说,用户每进行一个操作,其对应的状态是不同的,所述第一状态可以理解为协作发起客户端在协作发起客户端对其进行序列化操作之前的最后一个状态。
[0051]协作发起客户端将第一序列化数据和协作受理客户端用户名一起作为第一消息发送到服务器。
[0052]S102:服务器将所述第一消息发送到所述用户名对应的协作受理客户端;
[0053]服务器根据第一消息中的携带的用户名可以唯一的确定一个用户,进而确定该用户使用的客户端,即协作受理客户端,协作受理客户端接收到第一消息后,可以对第一序列化数据进行反序列化操作,得到第一状态下的当前应用对象并在第一状态下的当前应用对象的基础上进行后续的业务操作。
[0054]本实施例提供的技术方案,协作发起客户端与协作受理客户端在进行协作时,协作发起客户端以服务器为中介,将应用对象序列化之后由服务器转发到协作受理客户端,协作受理客户端将序列化数据进行反序列化操作即可还原出应用对象。
[0055]对于协作受理客户端来说,其具有权限操作的仅仅是服务器转发的序列化数据对应的应用对象,其他的资源对于协作受理客户端来说并不可见,对应的操作权限无需转移,应用的操作权限是否转移由协作发起客户端决定,而且操作权限的转移局限在当前的应用对象,不会对客户端操作系统中的其他应用程序造成任何威胁;协作过程不涉及第三方应用软件,可以避免因第三方受到恶意攻击,导致与之通信的企业内部数据被窃取的情况,提高了业务操作的安全性。
[0056]进一步,参考图2所示,为本发明实施例一种协作方法实施例2的流程图,本实施例的技术方案应用于服务器侧,可以看作是在实施例1基础上的一个具体实现,本实施例具体可以包括:
[0057]S201:服务器接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息;
[0058]所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据。
[0059]优选的,所述第一消息中还可以携带有协作受理客户端对所述应用对象的操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果。
[0060]S202:服务器将所述第一消息发送到所述用户名对应的协作受理客户端;
[0061]其中,服务器将第一消息发送到所述用户名对应的协作受理客户端的方式可以采用如下任一方式:[0062]服务器推送方式:服务器根据协作受理客户端用户名确定协作受理客户端的IP地址;将所述第一消息推送到所述IP地址指示的协作受理客户端;
[0063]或,
[0064]客户端主动查询方式:服务器接收任一客户端发送的查询请求;如果该客户端的用户名与第一消息中携带的用户名相同,则将所述第一消息发送到所述客户端,所述客户端记为协作受理客户端。
[0065]当所述第一消息中携带的操作权限为协作受理客户端返回业务操作的结果时,本实施例在上述步骤之后,还可以包括如下优选步骤:
[0066]S203:服务器接收协作受理客户端发送的携带所述协作发起客户端用户名和第二序列化数据的第二消息;
[0067]协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象,并在第一状态下的所述当前应用对象的基础上完成后续的业务操作,如果第一消息中指示了协作受理客户端返回业务操作结果,则协作受理客户端需要将完成业务操作后的应用对象进行序列化得到第二序列化数据并将其通过服务器返回给协作发起客户端。
[0068]S204:服务器将第二消息发送到协作发起客户端;
[0069]协作发起客户端对第二消息中的第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
[0070]本实施例不仅可以带来实施例1的有益效果,进一步的,进行协作的客户端之间并不需要实时传输鼠标操作,程序运行以及屏幕变化等数据,只需要将业务相关的某个状态下的应用对象序列化后进行传输即可,节约了大量网络资源;其次,应用对象状态的传输借助于服务器中转,协作的客户端之间并不需要直接通信并且保持连接状态,只要保证与服务器之间的通信就可以,克服了客户端只能进行点对点的协作的局限,可以将客户端协作扩展到分布式环境中。
[0071]参考图3所示,为本发明实施例一种协作方法实施例3的流程图,本流程应用于协作发起客户端侧,本实施例具体可以包括:
[0072]S301:协作发起端将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0073]S302:协作发起端向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;
[0074]服务器接收到所述第一消息后,将其发送到所述用户名对应的协作受理客户端,具体的发送方式可以参考实施例2中的步骤S202,这里不再赘述,然后,协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0075]参考图4所示,为本发明实施例一种协作方法实施例4的流程图,本流程应用于协作发起客户端侧,可以看作是在实施例3基础上的一种具体实现,本实施例具体可以包括:
[0076]S401:协作发起端将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0077]协作发起端得到第一序列化数据的过程如下:[0078]在第一状态下,遍历当前应用对象的属性,所述属性包括公有属性和私有属性,由于应用对象的私有属性无法获取,本实施例中引入属性存储图的概念,属性存储图中存储应用对象的所有私有属性的索引,将属性存储图作为应用对象的一个公有属性,则该应用对象的私有属性均存储在该公有属性下。因此,遍历当前应用对象的属性,即为在第一状态下,分别遍历当前应用对象的公有属性和第一属性存储图,其中,所述第一属性存储图为当前应用对象的所有私有属性的索引,对于公有属性,执行第一序列化流程,对于私有属性,则在第一属性存储图对应的节点下,执行第一序列化流程。
[0079]所述第一序列化流程包括(参考图5所示):判断属性(包括公有属性和私有属性)类型是否为基本类型,若是基本类型,则将基本类型的属性序列化为XML节点并转化为字符流,其中节点名为属性名,节点值为属性值;若不是基本类型,判断属性类型是否为集合类型,若不是集合类型,则创建该非集合类型属性对应的节点,在该节点下,将非集合类型的属性作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤,对于所述非集合类型的属性,其实质是遍历该非集合类型属性的公有属性和私有属性。
[0080]若是集合类型,创建该集合类型属性对应的节点,节点名为属性名,遍历集合类型属性中每个集合元素,若集合元素的类型是基本类型,在集合类型属性对应的节点下,将基本类型的集合元素序列化为XML节点并转化为字符流;若集合元素的类型不是基本类型,则将该集合元素作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤。
[0081]执行完上述第一序列化流程后,除基本类型之外的其他类型的属性均被拆分为多个基本类型,从而简化了序列化过程。非基本类型的属性序列化完成后形成的是多级节点的形式,比如,对于一个集合类型的属性来说,假设该属性对应的节点名为A,若该集合类型是数组类型,则遍历集合元素时,集合元素对应的节点可以看作是节点A的子节点。
[0082]需要说明,除了 XML节点之外,还可以将基本类型的属性直接序列化为二进制、JSON等形式。
[0083]当前应用对象的属性遍历完后,该应用对象的序列化操作即完成,需要说明的是,由于对应用对象序列化时,采用的遍历应用对象属性的方式,也就是说不同的属性的序列化不是同时完成的,所以已经序列化的部分转化成的字符流要先进行存储,等待整个应用对象序列化完成之后(即得到第一序列化数据),再进行发送。
[0084]S402:协作发起端向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;
[0085]服务器接收第一消息后,将第一消息发送到所述用户名对应的协作受理客户端,协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象,在第一状态下的所述应用对象的基础上完成业务操作,若第一消息中指示了协作受理客户端需要返回操作结果,则协作受理客户端需要对第二状态下的当前应用对象进行序列化得到第二序列化数据,并通过服务器发送到协作发起客户端。
[0086]S403:协作发起客户端接收服务器发送的携带所述协作发起客户端用户名和第二序列化数据的第二消息;
[0087]S404:协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的应用对象。
[0088]实施例3和实施例4是本发明技术方案从协作发起客户端侧进行描述的,可以产生与实施例1和实施例2相同的有益效果,这里不再赘述。
[0089]参考图6所示,为本发明实施例一种协作方法实施例5的流程图,本流程应用于协作受理客客户端侧,本实施例具体可以包括:
[0090]S601:协作受理客户端接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息;
[0091]所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据。
[0092]S602:协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0093]S603:在所述第一状态下的当前应用对象的基础上完成业务操作。
[0094]参考图7所示,为本发明实施例一种协作方法实施例6的流程图,本流程应用于协作发起客户端侧,本实施例具体可以包括:
[0095]S701:协作受理客户端接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息;
[0096]所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据;
[0097]S702:协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0098]协作受理客户端对第一序列化数据进行反序列化操作的过程如下(参考图8所示):
[0099]构造初始状态下的当前应用对象,在构成初始状态下的当前应用对象后,可以通过new函数获取第二属性存储图,所述第二属性存储图为初始应用对象的所有私有属性的索引,用于反序列化得到私有属性;
[0100]在第一序列化数据的节点信息中,分别遍历公有节点信息和私有节点信息,对于公有节点,执行第一反序列化流程,对于私有节点,执行第二反序列化流程;
[0101]所述第一反序列化流程包括:
[0102]所述第一反序列化流程包括:判断节点类型是否为基本类型,若是基本类型,则生成基本类型的公有属性,属性名为节点名,属性值为节点值;
[0103]若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;
[0104]若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;
[0105]所述第二反序列化流程包括:
[0106]在第二属性存储图中取属性名是所述节点名的属性,判断节点类型是否为基本类型,若是基本类型,为该属性赋值为节点值;[0107]若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该非集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;
[0108]若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,则在所述属性下生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤。
[0109]协作受理客户端遍历所有的公有节点信息和私有节点信息后,获得所有的公有属性和私有属性,至此,就可以得到第一状态下的当前应用对象,因为第二属性存储图中的私有属性均已经具有具体的属性值,而且该属性值是当前应用对象在第一状态下的属性值,即在反序列化完成后,第二属性存储图为第一状态下当前应用对象的私有属性的索引。
[0110]S703:在所述第一状态下应用对象的基础上完成业务操作。
[0111]所述第一消息还可以包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,协作受理客户端还可以执行以下优选流程:
[0112]S704:将当前应用对象在第二状态下进行序列化操作,得到第二序列化数据;
[0113]如果协作发起客户端需要协作受理客户端返回操作结果,则协作受理客户端需要对当前应用对象在第二状态下进行序列化操作,具体的序列化过程可以参考实施例4中的序列化过程,这里不再赘述。
[0114]S705:向服务器返回携带所述协作发起客户端用户名和第二序列化数据的第二消息;
[0115]服务器接收第二消息后,将第二消息发送到协作发起客户端,协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的应用对象,即得到协作受理客户端返回操作结果。
[0116]需要说明的是,虽然本发明中的实施例是以协作发起客户端和协作受理客户端分别单独作为执行主体来写的,本领域技术人员可以理解,在实际操作中,协作发起客户端和协作受理客户端可以是同一个客户端,因为一个客户端既可能是协作发起客户端也可能是协作受理客户端,所以,在实际应用中,一个客户端应该同时能够完成协作发起客户端和协作受理客户端的工作流程。
[0117]实施例5和实施例6是本发明技术方案从协作发起客户端侧进行描述的,可以产生与实施例1和实施例2相同的有益效果,这里不再赘述。
[0118]参考图9所示,为本发明实施例一种协作方法实施例7的流程图,本实施例可以看作是服务器、协作发起客户端和协作受理客户端之间的一个综合流程,相关步骤的具体实现方式可以参考实施例1-实施例6中的相关步骤,这里不再赘述。本实施例具体可以包括:
[0119]S901:协作发起端将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0120]协作发起端将运行的当前应用对象在第一状态下进行序列化的过程具体可以参考实施例4中的相关步骤,这里不再赘述。
[0121]S902:协作发起端向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;
[0122]S903:服务器将所述第一消息发送到所述用户名对应的协作受理客户端;
[0123]S904:协作受理客户端接收服务器发送的第一消息;
[0124]S905:协作受理客户端对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0125]协作受理客户端对接收的第一序列化数据进行反序列化操作的过程可以参考实施例6中的相关步骤,这里不再赘述。
[0126]S906:在所述第一状态下应用对象的基础上完成业务操作。
[0127]所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,还可以包括如下流程:
[0128]S907:将当前应用对象在第二状态下进行序列化操作,得到第二序列化数据;
[0129]若协作发起客户端需要协作受理客户端返回操作结果,则协作受理客户端在所述应用对象的基础上完成业务操作之后,将当前应用对象在第二状态下进行序列化操作,并通过服务器转发到协作发起客户端。
[0130]S908:向服务器返回携带所述协作发起客户端用户名和第二序列化数据的第二消息;
[0131]S909:服务器接收协作受理客户端发送的第二消息;
[0132]S910:服务器将第二消息发送到协作发起客户端;
[0133]S911:协作发起客户端接收服务器发送的第二消息;
[0134]S912:协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的应用对象。
[0135]上面对本发明实施例中的客户端协作方法进行了描述,下面对本发明实施例中的服务器进行描述,请参阅图10,本发明中服务器实施例1的结构示意图,包括:
[0136]第一接收模块1010,用于接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据;
[0137]第一发送模块1020,用于将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0138]进一步的,所述第一消息中还携带有协作受理客户端对所述应用对象的操作权限的指示,所述操作权限包括协作受理客户端返回业务操作的结果和不返回业务操作的结果。当所述操作权限为协作受理客户端返回业务操作的结果时,参考图11所示,为本发明中服务器实施例2结构示意图,除图8所示的模块外,所述服务器还可以包括:
[0139]第二接收模块1110,用于接收协作受理客户端返回的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据;
[0140]第二发送模块1120,用于将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。[0141]优选的,所述第一发送模块1020可以包括:
[0142]IP地址确定子模块1130,用于根据协作受理客户端用户名确定协作受理客户端的IP地址;发送子模块1140,用于将所述第一消息推送到所述IP地址指示的协作受理客户端;
[0143]或,
[0144]接收子模块1150,用于接收任一客户端发送的查询请求;则所述发送子模块1140,具体用于当该客户端的用户名与第一消息中携带的用户名相同时,将所述第一消息发送到所述客户端,所述客户端为协作受理客户端。
[0145]其中,第二发送模块将第二消息发送到协作发起客户端的方式参考第一发送模块。
[0146]参考图12所示,为本发明实施例中一种客户端(协作发起客户端)实施例1的结构示意图,所述客户端可以包括:
[0147]第一序列化模块1201,用于将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据;
[0148]第一数据发送模块1202,用于向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;以便服务器将第一消息发送到所述用户名对应的协作受理客户端,以便协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
[0149]进一步的,本发明实施例还提供一种客户端(协作发起客户端)的另一实施例,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,除了图12所示的模块外,所述客户端还可以包括:
[0150]第一数据接收模块,用于接收服务器发送的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据;
[0151]第一反序列化模块,用于对接收的第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
[0152]其中,第一序列化模块将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据的流程如下:
[0153]在第一状态下,分别遍历当前应用对象的公有属性和第一属性存储图,所述第一属性存储图为当前应用对象的所有私有属性的索引,对于公有属性,执行第一序列化流程,对于私有属性,则在第一属性存储图对应的节点下,执行第一序列化流程;
[0154]所述第一序列化流程包括:判断属性类型是否为基本类型,若是基本类型,则将基本类型的属性序列化为XML节点并转化为字符流,其中节点名为属性名,节点值为属性值;若不是基本类型,判断属性类型是否为集合类型,若不是集合类型,则创建该非集合类型属性对应的节点,在该节点下,将非集合类型的属性作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤;若是集合类型,创建该集合类型属性对应的节点,节点名为属性名,遍历集合类型属性中每个集合元素,若集合元素的类型是基本类型,在集合类型属性对应的节点下,将基本类型的集合元素序列化为XML节点并转化为字符流;若集合元素的类型不是基本类型,则将该集合元素作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤。
[0155]参考图13所示,本发明实施例中一种客户端(协作受理客户端)实施例2的结构示意图,所述客户端可以包括:
[0156]第二数据接收模块1310,用于接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据;
[0157]第二反序列化模块1320,用于对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象;
[0158]执行模块1330,用于在所述第一状态下的当前应用对象的基础上完成业务操作。
[0159]进一步的,本发明实施例中一种客户端(协作受理客户端)的又一实施例,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,除图13所示的模块外,所述客户端还可以包括:
[0160]第二序列化模块,用于将当前应用对象在第二状态下进行序列化操作,得到第二序列化数据;
[0161]第二数据发送模块,用于向服务器返回携带所述协作发起客户端用户名和第二序列化数据的第二消息;以便服务器将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的应用对象。
[0162]其中,第二序列化模块将当前应用对象在第二状态下进行序列化操作,得到第二序列化数据执行如下流程:
[0163]第二反序列化模块对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象,执行如下流程:
[0164]构造初始状态下的当前应用对象,获取第二属性存储图,所述第二属性存储图为初始状态下的当前应用对象的所有私有属性的索引;
[0165]在第一序列化数据的节点信息中,分别遍历公有节点信息和私有节点信息,对于公有节点,执行第一反序列化流程,对于私有节点,执行第二反序列化流程;
[0166]所述第一反序列化流程包括:判断节点类型是否为基本类型,若是基本类型,则生成基本类型的公有属性,属性名为节点名,属性值为节点值;若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;
[0167]所述第二反序列化流程包括:在第二属性存储图中取属性名是所述节点名的属性,判断节点类型是否为基本类型,若是基本类型,为该属性赋值为节点值;若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该非集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,则在所述属性下生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤。
[0168]需要说明的是,在实际应用中,一个客户端要同时具有协作发起客户端和协作受理客户端的模块,实现一个客户端既可以作协作的发起方,也可以作协作的受理方的目的。
[0169]参考图14所示,本发明实施例中一种协作系统实施例1的结构示意图,包括:
[0170]上述任一实施例所述的服务器1410、任一实施例所述的协作发起客户端1420和任一实施例所述的协作受理客户端1430 ;
[0171]为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0172]从以上各实施例的描述可以看出,序列化和反序列化的过程是相当复杂的。为了减轻应用开发人员的负担,在实际应用中,可以引入框架模式(参考图15所示,为个客户端应用系统的基本架构),并通过设计专门的应用模型,将实现协作的整个过程“隐藏”在应用对象外部。应用对象运行在框架的基础之上。框架是公共功能的抽象,它在底层运行,为上层应用对象提供基础服务,其中包括协作方面的功能服务。反过来,框架也会主动调用应用对象的某些接口,实现对应用对象的管理和控制。
[0173]应用对象专注于应用功能的本身,它通过调用框架的服务,部分地复用框架中基础功能。“应用模型”主要通过一些基类来实现,它们抽象了应用对象的公共特征,在这里我们主要关注与协作相关的部分。在应用基类中,一个重要的设施是变量容器。它的用途是向框架提供访问应用成员的接口。因为具体应用类都从基类派生,继承了基类的功能和接口,因此在序列化过程中框架无需感知具体应用对象之间的差异。此外,在应用基类中引入数据绑定技术,将界面与业务逻辑(包括数据)彻底分离,实现不同序列化策略。
[0174]应用图15所示的框架结构,具有如下优点:
[0175]1、应用对象在创建完成后,初始化方法会被框架调起执行。该方法可以接受一个xml格式的参数传入(当然还有若干个重载),它的逻辑主要有两个,一是根据xml参数传入,对应用对象进行属性设置,二是将已经完成初始化的应用对象属性在“属性图”中建立索引。属性图是一个哈希表,存、取效率很高。在图中,用“名字,引用指针”对存储一些应用对象的索引。但这个存储结构并不对应用开放,目的是为了增强安全性。具体应用类的开发人员只能看到一个方法,用于将属性“保存”到这个图中。框架在序列化应用对象的时候,要使用这个图中的信息,按图索骥,找到应用对象的属性信息,完成对属性的序列化操作。
[0176]2、反序列化的过程本质上就是将一个应用对象初始化为某个指定的状态。当然,xml格式的参数是有设定格式的,这是应用对象对外暴露的接口规范。具体应用类的开发人员需要将自定义的属性“保存”到属性图中,也就是在图中建立属性的索引。这个过程完全是程式化操作,几乎拷贝代码即可完成,因此极为简单。
[0177]3、应用基类对框架来说,暴露的是序列化和反序列化方法的接口,这两个方法的逻辑主体都在基类中实现,应用无需重写(参考图16所示)。这一对方法实现了各种简单的、复杂的对象的序列化逻辑,包括列表和数组。它依赖应用的属性图所提供的信息工作。首先,框架创建应用对象,应用对象执行自己的构造函数,返回应用对象的引用给框架。框架紧接着调用该应用对象的初始化方法,并根据需要传入xml格式的参数给应用对象。应用对象执行初始化过程,在属性图中建立属性的索引。初始化过程完成后,框架才认为应用对象的构造过程结束。
[0178]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅是本发明的【具体实施方式】,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种协作方法,其特征在于,包括: 服务器接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据; 服务器将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述当前应用对象的基础上完成业务操作。
2.根据权利要求1所述的方法,其特征在于,服务器将第一消息发送到所述用户名对应的协作受理客户端,包括: 服务器根据协作受理客户端用户名确定协作受理客户端的IP地址;服务器将所述第一消息推送到所述IP地址指示的协作受理客户端; 或, 服务器接收任一客户端发送的查询请求;如果该客户端的用户名与第一消息中携带的用户名相同,则将所述第一消息发送到所述客户端,所述客户端为协作受理客户端。
3.根据权利要求1所述的方法,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,还包括: 服务器接收协作受理客户端返回的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据; 服务器将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
4.一种服务器,其特征在于,所述服务器包括: 第一接收模块,用于接收协作发起客户端发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行的当前应用对象在第一状态下的序列化数据; 第一发送模块,用于将第一消息发送到所述用户名对应的协作受理客户端,以便于协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
5.根据权利要求4所述的服务器,其特征在于,所述第一发送模块包括: IP地址确定子模块,用于根据协作受理客户端用户名确定协作受理客户端的IP地址;发送子模块,用于将所述第一消息推送到所述IP地址指示的协作受理客户端; 或, 接收子模块,用于接收任一客户端发送的查询请求;则所述发送子模块,具体用于当该客户端的用户名与第一消息中携带的用户名相同时,将所述第一消息发送到所述客户端,所述客户端为协作受理客户端。
6.根据权利要求4所述的服务器,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,所述服务器还包括: 第二接收模块,用于接收协作受理客户端返回的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据; 第二发送模块,用于将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
7.—种协作方法,其特征在于,所述方法包括: 协作发起端将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据; 协作发起端向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;以便服务器将第一消息发送到所述用户名对应的协作受理客户端,以便协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
8.根据权利要求7所述的方法,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,所述方法还包括: 协作发起客户端接收服务器发送的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据; 协作发起客户端对接收的第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
9.根据权利要求7所述的方法,其特征在于,协作发起端将运行的当前应用对象在第一状态下进行序列化,包括: 在第一状态下,分别遍历当前应用对象的公有属性和第一属性存储图,所述第一属性存储图为当前应用对象的所有私有属性的索引,对于公有属性,执行第一序列化流程,对于私有属性,则在第一属性存储图对应的节点下,执行第一序列化流程; 所述第一序列化流程包括:判断属性类型是否为基本类型,若是基本类型,则将基本类型的属性序列化为XML节点并转化为字符流,其中节点名为属性名,节点值为属性值;若不是基本类型,判断属性类型是否为集合类型,若不是集合类型,则创建该非集合类型属性对应的节点,在该节点下,将非集合类型的属性作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤;若是集合类型,创建该集合类型属性对应的节点,节点名为属性名,遍历集合类型属性中每个集合元素,若集合元素的类型是基本类型,在集合类型属性对应的节点下,将基本类型的集合元素序列化为XML节点并转化为字符流;若集合元素的类型不是基本类型,则将该集合元素作为当前应用对象,返回执行所述分别遍历当前应用对象的公有属性和第一属性存储图的步骤。
10.一种客户端,其特征在于,所述客户端包括: 第一序列化模块,用于将运行的当前应用对象在第一状态下进行序列化以得到第一序列化数据; 第一数据发送模块,用于向服务器发送携带第一序列化数据和协作受理端用户名的第一消息;以便服务器将第一消息发送到所述用户名对应的协作受理客户端,以便协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的所述当前应用对象并在第一状态下的所述应用对象的基础上完成业务操作。
11.根据权利要求10所述的客户端,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,所述客户端还包括: 第一数据接收模块,用于接收服务器发送的携带所述协作发起客户端用户名和第二序列化数据的第二消息,所述第二序列化数据为所述当前应用对象在第二状态下的序列化数据; 第一反序列化模块,用于对接收的第二序列化数据进行反序列化操作得到第二状态下的所述当前应用对象。
12.—种协作方法,其特征在于,包括: 协作受理客户端接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据; 协作受理客户端对第一序列化数据进行反序列化操作得到第一状态下的当前应用对象; 在所述第一状态下的当前应用对象的基础上完成业务操作。
13.根据权利要求12所述的方法,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,还包括: 将当前应用对象在第二状态 下进行序列化操作,得到第二序列化数据; 向服务器返回携带所述协作发起客户端用户名和第二序列化数据的第二消息;以便服务器将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作得到第二状态下的应用对象。
14.根据权利要求12所述的方法,其特征在于,协作受理客户端对第一序列化数据进行反序列化操作,包括: 构造初始状态下的当前应用对象,获取第二属性存储图,所述第二属性存储图为初始状态下的当前应用对象的所有私有属性的索引; 在第一序列化数据的节点信息中,分别遍历公有节点信息和私有节点信息,对于公有节点,执行第一反序列化流程,对于私有节点,执行第二反序列化流程; 所述第一反序列化流程包括:判断节点类型是否为基本类型,若是基本类型,则生成基本类型的公有属性,属性名为节点名,属性值为节点值;若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤; 所述第二反序列化流程包括:在第二属性存储图中取属性名是所述节点名的属性,判断节点类型是否为基本类型,若是基本类型,为该属性赋值为节点值;若节点类型不是基本类型,判断节点类型是否为集合类型,若不是集合类型,则在该非集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤;若是集合类型,则遍历集合类型节点中每个集合元素节点,若集合元素节点类型是基本类型,则在所述属性下生成基本类型的集合元素,元素名为节点名,元素值为节点值;若集合元素节点类型不是基本类型,则在该集合元素节点下返回执行所述分别遍历公有节点信息和私有节点信息的步骤。
15.—种客户端,其特征在于,包括: 第二数据接收模块,用于接收服务器发送的携带第一序列化数据和协作受理客户端用户名的第一消息,所述第一序列化数据为协作发起客户端运行当前应用对象在第一状态下的序列化数据; 第二反序列化模块,用于对接收的第一序列化数据进行反序列化操作得到第一状态下的当前应用对象; 执行模块,用于在所述第一状态下的当前应用对象的基础上完成业务操作。
16.根据权利要求15所述的客户端,其特征在于,所述第一消息还包括操作权限的指示,所述操作权限包括协作受理客户端返回业务操作结果和不返回业务操作结果,当所述操作权限为协作受理客户端返回业务操作结果时,所述客户端还包括: 第二序列化模块,用于将当前应用对象在第二状态下进行序列化操作,得到第二序列化数据; 第二数据发送模块,用于向服务器返回携带所述协作发起客户端用户名和第二序列化数据的第二消息;以便服务器将第二消息发送到协作发起客户端,以便协作发起客户端对第二序列化数据进行反序列化操作 得到第二状态下的应用对象。
17.一种客户端协作系统,其特征在于,所述系统包括: 如权利要求4-6任一项所述的服务器、权利要求10-11任一项所述的客户端和权利要求15-16任一项所述的客户端。
【文档编号】H04L12/58GK103546369SQ201310566671
【公开日】2014年1月29日 申请日期:2013年11月13日 优先权日:2013年11月13日
【发明者】操先良, 应俊, 黄强, 刘利峰, 朱坤 申请人:中国农业银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1