一种远程调用的方法

文档序号:8006446阅读:136来源:国知局
一种远程调用的方法
【专利摘要】本发明提供了一种远程调用的方法,通信双方的第一方远程调用第二方去执行某一操作,首先第一方把要发送的不同数据类型的源数据按照一定的顺序通过通用数据处理类处理成各个打包数据,接着将各个打包数据按照该顺序连续地存储在通用协议结构体中,并存储第二方将被调用的函数名ID,然后打包成数据包通过网络发送给第二方,最后在第二方中接收到第一方发送过来的数据包时,解包后根据协议确定是第一方发出的远程调用,接着提取相应的函数名ID和按该顺序连续存储的打包数据,并将函数名ID转换成函数名和将按该顺序连续存储的各个打包数据通过通用数据处理类进行反处理成各个源数据后,按照该顺序作为函数的参数并调用函数执行相应的操作。
【专利说明】一种远程调用的方法
【技术领域】
[0001]本发明涉及一种远程调用的方法,属于计算机网络通信的应用领域。
【背景技术】
[0002]目前,对于各平台间的相互通信主要是采用一致的协议和协议结构体,如果每次相互通信的数据内容不一样时,例如,数据类型的不一样和个数的不一样时,通信双方都得重新定义一致的协议号和协议结构体,这样会显得相当繁琐。因此,在远程调用中,为了解决这个问题,需要通信双方实现在数据内容不一样时仍然可以通过所定义的通用的协议和协议结构体进行相互通信。

【发明内容】

[0003]本发明提供了一种实现远程调用的方法,该技术方案提供了一种稳定的、易描述的、跨平台的、跨语言的、高效的远程调用方式。目的是为了解决在通信双方间通信数据内容不一样时,频繁的定义协议和协议结构体来进行相互通信的问题,而提出的一种通信双方在通信数据内容不一样时通过一个统一一致的通用协议和通用协议结构体来进行相互通信的方法。
[0004]本发明涉及的是各进程间的远程调用,不仅可以用于同一平台间进程的远程调用,也可以用于不同平台间的远程调用。
[0005]为了实现上述目的,本发明采用以下的技术方案:
一种远程调用的方法,其用于互相通信的两方中的第一方远程调用第二方去执行一操作,其特征在于,包括如下步骤:
第一方把要发送的不同数据类型的源数据(SourceData)按照一定的顺序通过通用数据处理类(CommonDataProcessClass)处理成各个打包数据(UnpackData)。
[0006]将各个打包数据连续地存储在通用协议结构体(CommonProtoco I Struct)中,并存储通信第二方将被调用的函数名ID,其中函数名ID根据通信双方约定的函数名转ID函数生成,即根据通信双方约定的函数名转ID函数把将被调用的函数的名称转换为函数名ID。
[0007]第一方将各个打包数据进一步打包成数据包后通过网络发送给第二方。
[0008]第二方接收从第一方发送过来的数据包,在进行解包处理后,根据通信双方约定的远程调用协议号确定是第一方发起的远程调用。
[0009]第二方提取相应的函数名ID和连续存储的打包数据,并将函数名ID转换成对应的原函数名和将各个打包数据通过通用数据处理类进行反处理成各个源数据,然后把各个源数据作为函数的参数并调用函数执行对应的远程调用的操作。
[0010]优选地,在执行远程调用之前,通信双方的第一方、第二方均使用统一一致的通信协议、通用协议结构体、通用数据处理类和函数名转ID函数。在本发明中,一致的通信协议包括通信双方约定的一个协议号。
[0011]其中,通用数据处理类将各个源数据打包处理成各个打包数据,其主要的目的就是为了能将各个打包数据连续地存储在通用协议结构体中,而不是将其存储为一个特定的结构体,因为这些数据存储在一个特定的结构体中会由于特定的结构体的对齐方式造成一些存储空间的浪费和不适用,例如在调用新的不同的函数时,原来的协议结构体已规定的数据类型和/或数据个数可能不适用于该新的函数,只能重新定义协议结构体。而将打包数据连续存储不仅可以节省存储空间,最重要的一点是可以使用通用的协议结构体,不必为通信双方中由于不同的数据内容的通信而频繁地定义通信协议和协议结构体。
[0012]优选地,如果第二方没有定义第一方远程调用的函数,则第二方还注册将被第一方远程调用的函数。
[0013]优选地,由第一方发送的源数据作为第二方中将被调用的函数的参数,第一方要发送的源数据的个数等于或少于第二方将被调用的函数的参数个数,且进行源数据处理的所述顺序与第二方中函数的参数的位置顺序一致。
[0014]优选地,第一方要发送的按照一定顺序的各个不同数据类型的源数据通过通用数据处理类处理成具有与源数据一致顺序的各个打包数据,如此其按该顺序连续地存储在通用协议结构体中。
[0015]优选地,第二方提取相应的函数名ID和按所述顺序连续存储的打包数据。
[0016]优选地,第二方提取的按所述顺序连续存储的打包数据,通过通用数据处理类进行解包反处理成与所述顺序一致的各个源数据。
[0017]优选地,第二方将解包反处理后的各个源数据作为函数的参数并调用函数执行相应的操作,其中进行源数据处理的所述顺序与第二方中函数的参数的位置顺序一致。
[0018]由此,根据本发明的方法,通信双方只需定义一个一致的通信协议、通用协议结构体、函数名转ID函数和一个处理不同数据类型的通用数据处理类;通信双方中的一方可以远程调用另一方去执行某一操作。
[0019]具体地,与现有技术相比,本发明具有以下显著优点和有益效果:
统一一致的通信协议和通用协议结构体,显著地减少了在通信数据不一样时频繁定义协议和协议结构体的繁琐操作。
[0020]通用数据处理类的强大功能主要表现在它把各个源数据打包处理成各个打包数据和把各个打包数据解包反处理成各个源数据。其打包处理的主要的目的就是为了能将各个打包数据连续地存储在协议结构体中,而不是将其存储为一个特定的结构体,因为这些数据存储在一个特定的结构体中会由于结构体的对齐方式造成一些存储空间的浪费,而将打包数据连续存储不仅可以节省存储空间,最重要的一点是可以使用通用的协议结构体,不必为通信双方中由于不同的数据内容的通信而频繁地定义协议和协议结构体;通用数据处理类解包反处理的主要目的是为了按所述顺序还原原始的数据。
[0021]有效地避免了由于协议和协议结构体的频繁定义而造成代码维护不方便。
【专利附图】

【附图说明】
[0022]以下结合附图,对本发明的实施例进行详细的描述。
[0023]图1所示为为本发明提出的远程调用方法的整体示意图。
【具体实施方式】[0024]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0025]本发明中所使用的通用数据处理类11担当极为重要的角色,它具有强大的功能,可以处理和反处理各种不同的数据类型,其处理和反处理数据的大致流程如下:1)通用数据处理类11可以根据要处理的源数据I的数据类型,将其打包成打包数据2 ;2)通用数据处理类11可以根据要反处理的打包数据2的数据类型,将其解包成源数据I。
[0026]图1是本发明实施例中实现远程调用方法的整体示意图。在本文中,通信双方分别用第一方A和第二方B表示,以说明通信双方中的一方调用另一方执行某一操作的过程,其中双方在根据本发明的方法下可以互换,即根据需要互相调用。通信双方的第一方A、第二方B都要有统一一致的通信协议、协议结构体12、通用数据处理类11和函数名转ID函数,其中函数名转ID函数用于将函数3的函数名称转换为可识别和读取的ID,如果通信第二方B没有定义通信第一方A远程调用的函数3,则通信第二方B还必需注册将被通信第一方A远程调用的函数3。
[0027]第一方A远程调用第二方B去执行某一操作的这一过程,首先第一方A会先把要发送的不同数据类型的源数据I按照一定的顺序10通过通用数据处理类11处理成各个打包数据2,接着将处理过的各个打包数据2按照顺序10连续地存储在通用协议结构体12中,并存储通信第二方B将被调用的函数名ID (根据双方约定的函数名转ID函数生成的);然后打包成数据包通过网络发送给第二方B ;最后在第二方B中接收到第一方A发送过来的数据包时,解包后双方约定的远程调用协议号13确定是由第一方A发出的远程调用,接着提取相应的函数名ID和按顺序10连续存储的打包数据2,将函数名ID转换成对应的函数3的函数名称,以及将按顺序10连续存储的各个打包数据2通过通用数据处理类11进行反处理成各个源数据I后,使源数据I按照顺序10作为函数3的参数,最后调用函数3执行相应的操作。
[0028]其实在这一个过程中,通用数据处理类11的强大功能主要表现在它把各个源数据I打包处理成各个打包数据2和把各个打包数据2解包反处理成各个源数据I。这里通用数据处理类11把各个源数据I打包处理成各个打包数据2,其主要的目的就是为了能将各个打包数据2连续地存储在协议结构体12中,而不是将其存储为一个特定的结构体,因为这些数据存储在一个特定的结构体中会由于结构体的对齐方式造成一些存储空间的浪费,而将打包数据2连续存储不仅可以节省存储空间,最重要的一点是可以使用通用的协议结构体12,不必为通信双方中由于不同的数据内容的通信而频繁地定义协议和协议结构体。通用数据处理类11把各个打包数据2解包反处理的主要目的是为了按顺序10还原原始的数据。
[0029]在本发明的一优选的实施例中,源数据I作为被调用的函数3的输入参数一般为基本数据类型的数据,在通用数据处理类11把源数据I处理为打包数据2的过程中,具体地,为每一源数据I的数据类型提供对应的一定顺序的枚举号,并根据源数据I的数据类型来确定将被打包的源数据I的存储空间,最后把每一源数据I的数据类型的枚举号和源数据I的值连续储存为,例如,一字符串。而其反处理也是根据其数据类型的枚举号来获取其相应的源数据I的数据类型和源数据I的值,例如,从该字符串中提取出源数据I。
[0030]以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。
【权利要求】
1.一种远程调用的方法,其用于互相通信的双方中的第一方远程调用第二方去执行一操作,其特征在于,包括如下步骤: 第一方把要发送的不同数据类型的源数据按照一定的顺序通过一通用数据处理类处理成各个打包数据; 将各个打包数据连续地存储在一通用协议结构体中,并存储通信第二方将被调用的函数名ID,其中根据通信双方约定的函数名转ID函数把将被调用的函数的名称转换为函数名ID ; 第一方将各个打包数据进一步打包成数据包后通过网络发送给第二方; 第二方接收从第一方发送过来的数据包,在进行解包处理后,根据通信双方约定的远程调用协议号确定是第一方发起的远程调用; 第二方提取相应的函数名ID和连续存储的打包数据,将函数名ID转换成对应的函数名并将各个打包数据通过通用数据处理类进行反处理成各个源数据,然后把各个源数据作为函数的参数并调用函数执行对应的远程调用的操作。
2.根据权利要求1所述的一种远程调用的方法,其特征在于,在执行远程调用之前,通信双方的第一方、第二方均使用统一一致的通信协议、通用协议结构体、通用数据处理类,以及函数名转ID函数。
3.根据权利要求1所述的一种远程调用的方法,其特征在于,如果第二方没有定义第一方远程调用的函数,则第二方还注册将被第一方远程调用的函数。
4.根据权利要求1所述的一种远程调用的方法,其特征在于,由第一方发送的源数据作为第二方中将被调用的函数的参数,第一方要发送的源数据的个数等于或少于第二方将被调用的函数的参数个数,且进行源数据处理的所述顺序与第二方中函数的参数的位置顺序一致。
5.根据权利要求1所述的一种远程调用的方法,其特征在于,第一方要发送的按照一定顺序的各个不同数据类型的源数据通过通用数据处理类处理成具有与源数据一致顺序的各个打包数据,如此其按该顺序连续地存储在通用协议结构体中。
6.根据权利要求5所述的一种远程调用的方法,其特征在于,第二方提取相应的函数名ID和按所述顺序连续存储的打包数据。
7.根据权利要求1所述的一种远程调用的方法,其特征在于,第二方提取的按所述顺序连续存储的打包数据,通过通用数据处理类进行解包反处理成与所述顺序一致的各个源数据。
8.根据权利要求1所述的一种远程调用的方法,其特征在于,第二方将解包反处理后的各个源数据作为函数的参数并调用函数执行相应的操作,其中进行源数据处理的所述顺序与第二方中函数的参数的位置顺序一致。
【文档编号】H04L29/08GK103442075SQ201310396634
【公开日】2013年12月11日 申请日期:2013年9月4日 优先权日:2013年9月4日
【发明者】夏永, 王瑞瑶 申请人:珠海金山网络游戏科技有限公司, 珠海西山居祥游科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1