买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种在远程过程调用中的信息封装方法及装置_武汉斗鱼网络科技有限公司_201710524061.1 

申请/专利权人:武汉斗鱼网络科技有限公司

申请日:2017-06-30

公开(公告)日:2020-10-16

公开(公告)号:CN107483399B

主分类号:H04L29/06(20060101)

分类号:H04L29/06(20060101);G06F9/54(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.10.16#授权;2018.01.09#实质审查的生效;2017.12.15#公开

摘要:本发明公开了一种在远程过程调用中的信息封装方法,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。本发明实现了提高远程过程调用时的信息传输效率的技术效果。同时,本发明还公开了一种在远程过程调用中的信息封装装置。

主权项:1.一种在远程过程调用中的信息封装方法,其特征在于,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段,所述预设字段具体为args字段,所述args字段代表所述调用端所提供的所有调用参数;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数,所述调用参数的数据类型,包括:整数类型、或字节类型、或浮点类型、或美国信息交换标准码ASCII字符串类型、或统一的字符编码标准Unicode字符串类型、或数组类型、或对象类型;所述对所述调用参数进行序列化,获得序列化调用参数,包括:确定所述调用参数的数据类型;将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,获得所述序列化调用参数,包括:在所述调用参数的数据类型为整数类型时,将所述调用参数的整数值设置到所述序列化调用参数的m_intValue字段中,并将所述序列化调用参数的m_type字段设置为RAT_I32类型;在所述调用参数的数据类型为字节类型时,将所述调用参数的字节数值设置到所述序列化调用参数的m_i8Value字段中,并将所述序列化调用参数的m_type字段设置为RAT_I8类型;在所述调用参数的数据类型为浮点类型时,将所述调用参数的浮点值设置到所述序列化调用参数的m_singleValue字段中,并将所述序列化调用参数的m_type字段设置为RAT_SINGLE类型;在所述调用参数的数据类型为ASCII字符串类型时,将所述调用参数的ASCII字符串复制到所述序列化调用参数的m_charBuffer字段中,并将所述序列化调用参数的m_type字段设置为RAT_STRING类型;在所述调用参数的数据类型为Unicode字符串类型时,将所述调用参数的Unicode字符串复制到所述序列化调用参数的m_wcharBuffer字段中,并将所述序列化调用参数的m_type字段设置为RAT_WSTRING类型;在所述调用参数的数据类型为数组类型时,将所述调用参数的数组元素设置到所述序列化调用参数的m_elementNum字段中,并将所述序列化调用参数的m_type字段设置为RAT_BLOB类型;在所述调用参数的数据类型为对象类型时,将所述调用参数的结构体元素设置到所述序列化调用参数的m_elementNum字段中,并将所述序列化调用参数的m_type字段设置为RAT_OBJECT类型;基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,获得所述调用信息,包括:在所述调用参数的数据类型为非对象类型时,所述基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,包括:若所述调用参数的数据类型为非数组类型,则在所述预设字段中依次加入第一字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第二字节用于保存所述调用参数的参数值;若所述调用参数的数据类型为数组类型,则在所述预设字段中依次加入第一字节、第三字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第三字节用于所述调用参数中的数组元素的个数,所述第二字节用于保存所述调用参数的参数值。

全文数据:一种在远程过程调用中的信息封装方法及装置技术领域[0001]本发明涉及网络直播技术领域,尤其涉及一种在远程过程调用中的信息封装方法及装置。背景技术[0002]随着网络通信技术的进步和宽带网络的提速,网络直播得到了越来越多的发展和应用。在网络直播过程中,经常会进行远程过程调用。[0003]所谓远程过程调用,就是一个进程调用另外一个进程所提供的方法,在调用端的角度,远程过程调用和调用本进程的函数一样。在远程过程调用中,需要将调用端的调用信息通过网络发送给被调用端,被调用端处理完成相应的服务后,将产生的结果信息通过网络返回给调用端。[0004]但是,在现有技术中,在通过网络向被调用端发送调用信息时,信息传输效率较低,这严重影响了远程过程的调用。发明内容[0005]本申请实施例通过提供一种在远程过程调用中的信息封装方法及装置,解决了现有技术中在进行远程过程调用时,存在信息传输效率低的技术问题,实现了提高远程过程调用时的信息传输效率的技术效果。[0006]第一方面,本申请通过本申请的一实施例提供如下技术方案:[0007]—种在远程过程调用中的信息封装方法,包括:[0008]在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;[0009]获取用于调用所述远程过程的调用参数;[0010]对所述调用参数进行序列化,获得序列化调用参数;[0011]将所述序列化调用参数写入所述预设字段中,获得所述调用信息。[0012]优选地,所述对所述调用参数进行序列化,获得序列化调用参数,包括:[0013]确定所述调用参数的数据类型;[0014]将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,获得所述序列化调用参数。[0015]优选地,所述调用参数的数据类型,包括:[0016]整数类型、或字节类型、或浮点类型、或美国信息交换标准码ASCII字符串类型、或统一的字符编码标准Unicode字符串类型、或数组类型、或对象类型。[0017]优选地,所述将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,包括:[0018]在所述调用参数的数据类型为整数类型时,将所述调用参数的整数值设置到所述序列化调用参数的m_intValue字段中,并将所述序列化调用参数的111_17?6字段设置为RAT_132类型;[0019]在所述调用参数的数据类型为字节类型时,将所述调用参数的字节数值设置到所述序列化调用参数的m_i8Value字段中,并将所述序列化调用参数的111-”。6字段设置为RAT_I8类型;一[0020]在所述调用参数的数据类型为浮点类型时,将所述调用参数的浮点值设置到所述序列化调用参数的m_singleValue字段中,并将所述序列化调用参数的m-type字段设置为RAT_SINGLE类型;[0021]在所述调用参数的数据类型为ASCII字符串类型时,将所述调用参数的ASCII字符串复制到所述序列化调用参数的m_charBUffer字段中,并将所述序列化调用参数的m一type字段设置为RAT_STRING类型;[0022]在所述调用参数的数据类型为Unicode字符串类型时,将所述调用参数的Unicode字符串复制到所述序列化调用参数字段中,并将所述序列化调用参数的m_type字段设置为RAT_WSTRING类型;[0023]在所述调用参数的数据类型为数组类型时,将所述调用参数的数组元素设置到所述序列化调用参数的m_elementNum字段中,并将所述序列化调用参数的m-tyPe字段设置为RAT_BL0B类型;[0024]在所述调用参数的数据类型为对象类型时,将所述调用参数的结构体元素设置到所述序列化调用参数的11^6〗61116111^!!!]!字段中,并将所述序列化调用参数的m_type字段设置为RAT_0BJECT类型。[0025]优选地,所述将所述序列化调用参数写入所述预设字段中,包括:[0026]基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中。[0027]优选地,在所述调用参数的数据类型为非对象类型时,所述基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,包括:[0028]若所述调用参数的数据类型为非数组类型,则在所述预设字段中依次加入第一字节和第二字节,所述第一字节用于保存所述序列化调用参数的retype字段中的信息,所述第二字节用于保存所述调用参数的参数值。[0029]优选地,在所述调用参数的数据类型为非对象类型时,所述基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,包括:[0030]若所述调用参数的数据类型为数组类型,则在所述预设字段中依次加入第一字节、第三字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第三字节用于所述调用参数中的数组元素的个数,所述第二字节用于保存所述调用参数的参数值。[0031]第二方面,本申请通过本申请的一实施例提供如下技术方案:[0032]一种在远程过程调用中的信息封装装置,包括:[0033]确定单元,用于在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;[0034]获取单元,用于获取用于调用所述远程过程的调用参数;[0035]序列化单元,用于对所述调用参数进行序列化,获得序列化调用参数;[0036]写入单元,用于将所述序列化调用参数写入所述预设字段中,获得所述调用信息。[0037]第三方面,本申请通过本申请的一实施例提供如下技术方案:[0038]—种在远程过程调用中的信息封装装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:[0039]在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。[0040]第四方面,本申请通过本申请的一实施例提供如下技术方案:[0041]—种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:[0042]在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。[0043]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:[0044]在本申请实施例中,公开了一种在远程过程调用中的信息封装方法,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。在进行远程过程调用时,采用本方法获得调用信息,再将调用信息通过网络发送给远程过程的被调用端,可以大大提高远程过程调用时的信息传输效率,从而解决了现有技术中在进行远程过程调用时,存在信息传输效率低的技术问题。附图说明[0045]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0046]图1为本申请实施例中一种在远程过程调用中的信息封装方法的流程图;[0047]图2为本申请实施例中一种在远程过程调用中的信息封装装置200的结构图;[0048]图3为本申请实施例中一种在远程过程调用中的信息封装装置300的结构图;[0049]图4为本申请实施例中一种计算机可读存储介质的示意图。具体实施方式[0050]本申请实施例通过提供一种在远程过程调用中的信息封装方法及装置,解决了现有技术中在进行远程过程调用时,存在信息传输效率低的技术问题,实现了提高远程过程调用时的信息传输效率的技术效果。[0051]本申请实施例的技术方案为解决上述技术问题,总体思路如下:[0052]—种在远程过程调用中的信息封装方法,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。[0053]为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。[0054]实施例一[0055]本实施例提供了一种在远程过程调用中的信息封装方法,应用于终端设备中,所述终端设备可以是:PCPersonalComputer,个人电脑)、或智能手机、或平板电脑、或智能电视等等,对于所述终端设备具体是何种设备,本实施例不做具体限定。[0056]如图1所示,所述在远程过程调用中的信息封装方法,包括:[0057]步骤S101:在调用端进行远程过程调用时,确定用于调用远程过程的调用信息的数据结构,所述数据结构中包含一预设字段。其中,所述预设字段即为后文中的args字段。[0058]在本实施例中,为上述调用信息提供了一种新型数据结构,S卩,RpcMessageRemoteProcedureCallsMessage,远程过程调用信息)结构,该数据结构是基于二进制的,在RpcMessage结构中包含以下字段S卩:下文中的A1〜A7中的字段):[0059]AlVersion版本),该字段用来代表该RpcMessage的版本信息,在不同进程之间传输信息例如:调用端发给被调用端的调用信息,或调用端返回给被调用端的结果信息)时,必须保证版本的一致性,如果版本不一致,就代表两个不同进程之间使用的数据结构不一致,这可能会导致逻辑混乱,程序崩溃等问题。[0060]A2rpcTypeRemoteProcedureCallsType,远程过程调用类型),该字段用来标识传输信息是来自调用端进程的调用消息,还是来自被调用端进程的结果消息。当该字段的值为RPC_MESSAGE_REQUEST时,代表来自调用端进程的调用消息,当该字段的值为RPC_MESSAGE_RESP0NSE时,代表来自被调用端进程的结果消息。[0061]A3gid唯一标识符符),该字段用来唯一标识一个传输信息,从调用端端生成,跟随调用信息发送给被调用端处理后,被调用端会将该gid连同结果信息返回给调用端。[0062]A4numArgs,该字段值用来表示调用端调用远程方法时传入的调用参数个数,或者,该字段值用来表示被调用端返回给调用端的结果个数。[0063]A5varLength,该字段值代表numArgs字段占据的内存字节大小。[0064]A6procedure,该字段代表要调用的远程方法名称。[0065]A7args,该字段代表调用端所提供的所有调用参数,或者,该字段代表被调用端返回的所有结果。[0066]步骤S102:获取用于调用远程过程的调用参数。[0067]在具体实施过程中,调用端在进行远程调用时,会用到多个调用参数,此处需要获取全部的调用参数。[0068]步骤S103:对调用参数进行序列化,获得序列化调用参数。[0069]作为一种可选的实施方式,步骤S103,包括:[0070]确定调用参数的数据类型;将调用参数的数据类型转化为IRpcArgumentRemoteProcedureCallsArgument,远程过程调用参数类型,获得序列化调用参数。[0071]其中,所述调用参数的数据类型,包括:整数类型、或字节类型、或浮点类型、或ASCIIAmericanStandardCodeforInformationInterchange,美国信息交换标准码)字符串类型、或Unicode统一的字符编码标准字符串类型、或数组类型、或对象类型。[0072]在具体实施过程中,IRpcArgument类型包含的字段有:m_intValue、m_i8Value、m_singleValue、m—charBuffer、m一wcharBuffer、m_e1ementNum、m—type〇[0073]作为一种可选的实施方式,所述将调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,包括以下情况即:下文中的B1〜B7中的情况):[0074]B1整数类型序列化:就是将类型为int类型的调用参数转化为IRpcArgument类型。[0075]具体来讲,在调用参数的数据类型为整数类型时,可以将调用参数的整数值设置到序列化调用参数的m_intValue字段中,并将序列化调用参数的m_type字段设置为RAT_132类型。[0076]B2字节类型序列化:就是将类型为char的调用参数转化为IRpcArgument类型。[0077]具体来讲,在调用参数的数据类型为字节类型时,可以将调用参数的字节数值设置到序列化调用参数的111_18¥11^字段中,并将序列化调用参数的m_type字段设置为RAT_18类型。[0078]B3浮点类型序列化:就是将类型为float的调用参数转化为IRpcArgument类型。[0079]具体来讲,在调用参数的数据类型为浮点类型时,可以将调用参数的浮点值设置到序列化调用参数的m_singleValue字段中,并将序列化调用参数的m_type字段设置为RAT_SINGLE类型。[0080]B4ASCII字符串类型序列化:就是将类型为char*的字符串的调用参数转化为IRpcArgument类型。[0081]具体来讲,在调用参数的数据类型为ASCII字符串类型时,可以将调用参数的ASCII字符串复制到序列化调用参数的m_charBuffer字段中,并将序列化调用参数的m_type字段设置为RAT_STRING类型。[0082]B5Unicode字符串类型序列化:就是将类型为wchar_t*的字符串的调用参数转化为IRpcArgument类型。[0083]具体来讲,在调用参数的数据类型为Unicode字符串类型时,可以将调用参数的Unicode字符串复制到序列化调用参数的m_wcharBuffer字段中,并将序列化调用参数的m_type字段设置为RAT_WSTRING类型。[0084]¢6数组类型序列化:就是将数组类型的调用参数转化为IRpcArgument类型。[0085]具体来讲,在调用参数的数据类型为数组类型时,可以将调用参数的数组元素设置到序列化调用参数的111_6101^的_111字段中,并将序列化调用参数的m_type字段设置为RAT_BL0B类型。[0086]B7对象类型序列化:就是将结构体类型的调用参数转化为IRpcArgument类型。[0087]具体来讲,在调用参数的数据类型为对象类型时,可以将调用参数的结构体元素设置到序列化调用参数的m_elementNum字段中,并将序列化调用参数的m_type字段设置为RAT_0BJECT类型。[0088]步骤S104:将序列化调用参数写入预设字段中,获得调用信息。[0089]在具体实施过程中,步骤S104的作用就是将列化调用参数中的所有IRpcArgument值序列化到RpcMessage的args字段中,可以通过调用BuildRpcMessageFrom函数来实现将所有的IRpcArgument参数序列化为一个RpcMessage结构,从而进行网络传输。[0090]作为一种可选的实施方式,步骤S104,包括:基于调用参数的数据类型,将序列化调用参数写入预设字段中。[0091]在具体实施过程中,在执行步骤S104时,可以分为两种情况,一种是当调用参数的数据类型为非对象类型的情况,另一种是当调用参数的数据类型为对象类型的情况。[0092]作为一种可选的实施方式,在调用参数的数据类型为非对象类型时,所述基于调用参数的数据类型,将序列化调用参数写入预设字段中,包括下文中的C1和C2两种情况):[0093]C1若调用参数的数据类型为非数组类型,则在预设字段中依次加入第一字节和第二字节,第一字节用于保存序列化调用参数的m_type字段中的信息,第二字节用于保存调用参数的参数值。[0094]举例来讲,如果一调用参数是int类型,则在序列化调用参数的args字段中,第1个字节S卩:第一字节值是RAT_I:32,后面的4个字节S卩:第二字节值是该调用参数的值。[0095]C2若调用参数的数据类型为数组类型,则在预设字段中依次加入第一字节、第三字节和第二字节,第一字节用于保存序列化调用参数的m_type字段中的信息,第三字节用于调用参数中的数组元素的个数,第二字节用于保存调用参数的参数值。[0096]举例来讲,如果该调用参数是数组类型,那么,在序列化调用参数的args字段中,第1个字节(即:第一字节值是RAT_BL0B,后面的4个字节g卩:第三字节是该数组的元素个数大小,然后紧接着的字节(即:第二字节是该数组的值。例如,一个有10个元素的字节数组,分别为“1、2、3、4、5、6、7、8、9、10”,则序列化调用参数的内存值为“81000012345678910”,其中,第1个“8”代表该值代表一个数组类型,后面的“10000”是一个4字节的整型值,其中“10”表示该数组的元素个数,再后面的所有字节(g卩:“12345678910”)的内容就是该数组的值。[0097]作为一种可选的实施方式,在调用参数的数据类型为对象类型时,所述基于调用参数的数据类型,将序列化调用参数写入预设字段中,包括S卩:下文中的D:[0098]⑼如果该参数类型是对象类型,那么,在序列化调用参数的args字段中,第1个字节仍然是该序列化调用参数的111_^?6字段中的信息,后面的4个字节是该结构的元素个数,然后,针对该对象中的每一个元素,如果该元素是非数组类型,则执行上述步骤C1,如果该元素是数组类型,则执行上述步骤C2,如果该元素又是一个对象类型,则又进行递归执行本步骤D,依次执行下去。[00"]在基于本方法获得调用信息后,即完成了对调用参数的封装,调用端即可通过网路将该调用信息发送给远程过程的被调用端,被调用端在接收到该调用信息后,需要对该调用信息解封装,就是对其中的序列化调用参数进行反序列化,从而获取要执行的远程方法名、以及相关的调用参数。[0100]举例来讲,被调用端对调用信息的解封装过程,如下:[0101]被调用端可以读取调用信息的args字段中的第1个字节(即:第一字节),用于判定该序列化调用参数是对象类型还是非对象类型,当该字节不等于RAT_0BJECT值时,代表该序列化调用参数是一个非对象类型,则进入下面的步骤D1〜D6进行反序列化解码,当该值等于RAT_OBJECT值时,代表该序列化调用参数是一个对象类型,则进入下面的步骤E进行反序列化解码。[0102]D1整数类型:当序列化调用参数中的m_type字段值为RAT_I32时,则代表该序列化调用参数是一个整数类型,则读取args字段中的第二字节例如:第丨个字节后面的4个字节的内容,从而获得该调用参数的值。[0103]D2字节类型:当序列化调用参数中的m_type字段值为RAT_I8时,代表该序列化调用参数是一个字节类型,则读取args字段中的第二字节例如:第1字节后面的1个字节)的内容,从而获得该调用参数的值。[0104]D3浮点类型:当序列化调用参数中的m_type字段值为RAT_SINGLE时,代表该列化调用参数是一个浮点类型,则读取args字段中的第二字节例如:第〗个字节后面的4个字节)内容,从而获得该调用参数的值。[0105]D4ASCII字符串类型:当序列化调用参数中的„1_灯!^字段值为RAT_STRING时,代表该列化调用参数是一个ASCII字符串,则读取args字段中的内容,直到读到〇为止,从而获得该ASCII字符串的内容。[0106]D5Unicode字符串类型:当序列化调用参数中字段值为RAT_ffSTRING时,代表该列化调用参数是一个Unicode字符串,则读取args字段中的内容,直到读到0为止,从而获得该Unicode字符串的内容。[0107]D6数组类型:当序列化调用参数中的m_type字段值为RAT_BL0B时,代表列化调用该参数是一个数组类型,则读取args字段中的第二字节(S卩:例如:第1个字节后的4个字节)的内容,获取该数组元素的个数n,然后读取这n个字节的内容,从而获得该数组的所有元素值。[0108]⑻对象类型:当序列化调用参数中的111_17口6字段值为RAT_0BJECT时,则读取args字段中第二字节(例如:第1个字节后面的4个字节)的内容,获取该对象类型的内部n个元素,然后,对这n个元素,依次递归的执行上述步骤D1〜D6中的过程,从而对每个序列化调用参数进行反序列化,获得其中的调用参数。[0109]通过本方法,实现了在远程方法调用过程中的消息封装以及解封装,由于本方法是基于二进制的格式进行的,所以在网络传输过程中,所需要的字节数较小,具有更高的传输效率。[0110]上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:[0111]在本申请实施例中,公开了一种在远程过程调用中的信息封装方法,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。在进行远程过程调用时,采用本方法获得调用信息,再将调用信息通过网络发送给远程过程的被调用端,可以大大提高远程过程调用时的信息传输效率,从而解决了现有技术中在进行远程过程调用时,存在信息传输效率低的技术问题。[0112]实施例二[0113]基于同一发明构思,如图2所示,本实施例提供了一种在远程过程调用中的信息封装装置200,包括:[0114]确定单元201,用于在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;[0115]获取单元202,用于获取用于调用所述远程过程的调用参数;[0116]序列化单元203,用于对所述调用参数进行序列化,获得序列化调用参数;[0117]写入单元204,用于将所述序列化调用参数写入所述预设字段中,获得所述调用信肩、。[0118]作为一种可选的实施方式,序列化单元203,具体用于:[0119]确定所述调用参数的数据类型;将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,获得所述序列化调用参数。[0120]作为一种可选的实施方式,所述调用参数的数据类型,包括:[0121]整数类型、或字节类型、或浮点类型、或美国信息交换标准码ASCII字符串类型、或统一的字符编码标准Unicode字符串类型、或数组类型、或对象类型。[0122]作为一种可选的实施方式,序列化单元203,具体用于:[0123]在所述调用参数的数据类型为整数类型时,将所述调用参数的整数值设置到所述序列化调用参数的mjntValue字段中,并将所述序列化调用参数的rn_type字段设置为RAT_132类型;[0124]在所述调用参数的数据类型为字节类型时,将所述调用参数的字节数值设置到所述序列化调用参数的m_i8ValUe字段中,并将所述序列化调用参数的111_丨7?0字段设置为RAT_I8类型;[0125]在所述调用参数的数据类型为浮点类型时,将所述调用参数的浮点值设置到所述序列化调用参数的m_singleValue字段中,并将所述序列化调用参数的m_type字段设置为RAT_SINGLE类型;[0126]在所述调用参数的数据类型为ASCII字符串类型时,将所述调用参数的ASCII字符串复制到所述序列化调用参数的m_charBuffer字段中,并将所述序列化调用参数的m_type字段设置为RAT_STRING类型;[0127]在所述调用参数的数据类型为Unicode字符串类型时,将所述调用参数的Unicode字符串复制到所述序列化调用参数字段中,并将所述序列化调用参数的m_type字段设置为RATJVSTR頂G类型;[0128]在所述调用参数的数据类型为数组类型时,将所述调用参数的数组元素设置到所述序列化调用参数的m_elementNum字段中,并将所述序列化调用参数字段设置为RAT_BL0B类型;[0129]在所述调用参数的数据类型为对象类型时,将所述调用参数的结构体元素设置到所述序列化调用参数的1^_6161^11別11111字段中,并将所述序列化调用参数的m—type字段设置为RAT_0BJECT类型。[0130]作为一种可选的实施方式,序列化单元203,具体用于:[0131]基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中。[0132]作为一种可选的实施方式,序列化单元203,具体用于:[0133]在所述调用参数的数据类型为非对象类型时,若所述调用参数的数据类型为非数组类型,则在所述预设字段中依次加入第一字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第二字节用于保存所述调用参数的参数值。[0134]作为一种可选的实施方式,序列化单元203,具体用于:[0135]在所述调用参数的数据类型为对象类型时,若所述调用参数的数据类型为非数组类型,则在所述预设字段中依次加入第一字节、第三字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第三字节用于所述调用参数中的数组元素的个数,所述第二字节用于保存所述调用参数的参数值。[0136]由于本实施例所介绍的在远程过程调用中的信息封装装置为实施本申请实施例一中在远程过程调用中的信息封装方法所采用的装置,故而基于本申请实施例一中所介绍的在远程过程调用中的信息封装方法,本领域所属技术人员能够了解本实施例的在远程过程调用中的信息封装装置的具体实施方式以及其各种变化形式,所以在此对于该在远程过程调用中的信息封装装置如何实现本申请实施例一中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例一中在远程过程调用中的信息封装的方法所采用的装置,都属于本申请所欲保护的范围。[0137]上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:[0138]在本申请实施例中,公开了一种在远程过程调用中的信息封装装置,包括:确定单元,用于在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取单元,用于获取用于调用所述远程过程的调用参数;序列化单元,用于对所述调用参数进行序列化,获得序列化调用参数;写入单元,用于将所述序列化调用参数写入所述预设字段中,获得所述调用信息。在进行远程过程调用时,采用本方法获得调用信息,再将调用信息通过网络发送给远程过程的被调用端,可以大大提高远程过程调用时的信息传输效率,从而解决了现有技术中在进行远程过程调用时,存在信息传输效率低的技术问题。[0139]实施例三[0140]基于同一发明构思,如图3所示,本实施例提供了一种以同步方式进行远程过程调用的装置300,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,处理器320执行所述计算机程序311时实现以下步骤:[0141]在调用端进行远程过程调用时,确定用于调用远程过程的调用信息的数据结构,数据结构中包含预设字段;获取用于调用远程过程的调用参数;对调用参数进行序列化,获得序列化调用参数;将序列化调用参数写入预设字段中,获得调用信息。[0142]在具体实施过程中,处理器320执行计算机程序311时,可以实现实施例一种的任一实施方式,参考实施例一,此处不再赘述。[0143]实施例四[0144]基于同一发明构思,如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现以下步骤:[0145]在调用端进行远程过程调用时,确定用于调用远程过程的调用信息的数据结构,数据结构中包含预设字段;获取用于调用远程过程的调用参数;对调用参数进行序列化,获得序列化调用参数;将序列化调用参数写入预设字段中,获得调用信息。[0146]在具体实施过程中,该计算机程序411被处理器执行时,可以实现实施例一种的任一实施方式,参考实施例一,此处不再赘述。[0147]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、CD-ROM、光学存储器等上实施的计算机程序产品的形式。[0148]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和或方框图来描述的。应理解可由计算机程序指令实现流程图和或方框图中的每一流程和或方框、以及流程图和或方框图中的流程和或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的装置。[0149]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能。[0150]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的步骤。[0151]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。[0152]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

权利要求:1.一种在远程过程调用中的信息封装方法,其特征在于,包括:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。2.如权利要求1所述的在远程过程调用中的信息封装方法,其特征在于,所述对所述调用参数进行序列化,获得序列化调用参数,包括:确定所述调用参数的数据类型;将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,获得所述序列化调用参数。3.如权利要求1所述的在远程过程调用中的信息封装方法,其特征在于,所述调用参数的数据类型,包括:整数类型、或字节类型、或浮点类型、或美国信息交换标准码ASCII字符串类型、或统一的字符编码标准Unicode字符串类型、或数组类型、或对象类型。4.如权利要求3所述的在远程过程调用中的信息封装方法,其特征在于,所述将所述调用参数的数据类型转化为远程过程调用参数IRpcArgument类型,包括:在所述调用参数的数据类型为整数类型时,将所述调用参数的整数值设置到所述序列化调用参数的mjntValue字段中,并将所述序列化调用参数的11^71£5字段设置为RAT_I32类型;在所述调用参数的数据类型为字节类型时,将所述调用参数的字节数值设置到所述序列化调用参数的111_18¥11^字段中,并将所述序列化调用参数字段设置为RAT_I8类型;在所述调用参数的数据类型为浮点类型时,将所述调用参数的浮点值设置到所述序列化调用参数的m_singleValue字段中,并将所述序列化调用参数的111^^6字段设置为RAT_SINGLE类型;在所述调用参数的数据类型为ASCII字符串类型时,将所述调用参数的ASC11字符串复制到所述序列化调用参数的nucharBuffer字段中,并将所述序列化调用参数字段设置为RAT_STRING类型;在所述调用参数的数据类型为Unicode字符串类型时,将所述调用参数的Unicode字符串复制到所述序列化调用参数的m_wcharBuffer字段中,并将所述序列化调用参数的!!1_type字段设置为RAT_WSTRING类型;在所述调用参数的数据类型为数组类型时,将所述调用参数的数组元素设置到所述序列化调用参数的111_61611161^灿111字段中,并将所述序列化调用参数字段设置为RAT_BLOB类型;在所述调用参数的数据类型为对象类型时,将所述调用参数的结构体元素设置到所述序列化调用参数的m_elementNum字段中,并将所述序列化调用参数的111_1^6字段设置为RAT_OBJECT类型。5.如权利要求1〜4任一所述的在远程过程调用中的信息封装方法,其特征在于,所述将所述序列化调用参数写入所述预设字段中,包括:基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中。6.如权利要求5所述的在远程过程调用中的信息封装方法,其特征在于,在所述调用参数的数据类型为非对象类型时,所述基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,包括:若所述调用参数的数据类型为非数组类型,则在所述预设字段中依次加入第一字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第二字节用于保存所述调用参数的参数值。7.如权利要求5所述的在远程过程调用中的信息封装方法,其特征在于,在所述调用参数的数据类型为非对象类型时,所述基于所述调用参数的数据类型,将所述序列化调用参数写入所述预设字段中,包括:若所述调用参数的数据类型为数组类型,则在所述预设字段中依次加入第一字节、第三字节和第二字节,所述第一字节用于保存所述序列化调用参数的m_type字段中的信息,所述第三字节用于所述调用参数中的数组元素的个数,所述第二字节用于保存所述调用参数的参数值。8.—种在远程过程调用中的信息封装装置,其特征在于,包括:确定单元,用于在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取单元,用于获取用于调用所述远程过程的调用参数;序列化单元,用于对所述调用参数进行序列化,获得序列化调用参数;写入单元,用于将所述序列化调用参数写入所述预设字段中,获得所述调用信息。9.一种在远程过程调用中的信息封装装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。10.—种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:在调用端进行远程过程调用时,确定用于调用所述远程过程的调用信息的数据结构,所述数据结构中包含预设字段;获取用于调用所述远程过程的调用参数;对所述调用参数进行序列化,获得序列化调用参数;将所述序列化调用参数写入所述预设字段中,获得所述调用信息。

百度查询: 武汉斗鱼网络科技有限公司 一种在远程过程调用中的信息封装方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。