一种基于CORBA接口方法自适应调用方法技术

技术编号:4238200 阅读:242 留言:0更新日期:2012-04-11 18:40
本发明专利技术是一种基于CORBA接口方法自适应调用方法,把接口方法名及参数打包成二进制的序列,利用传输切片技术,将二进制序列分片发送到服务端,在服务端将二进制序列转换成接口名和参数,调用服务端的接口方法,再将输出参数转换成二进制序列传输到客户端。具有如下优点:1.使得CORBA技术可以延伸到状况更差的网络。2.维持原有的接口业务逻辑不变。3.二进制传输可以扩展加密。

【技术实现步骤摘要】

本专利技术涉及一种基于C0RBA接口方法自适应调用方法。
技术介绍
使用符合CORBA标准的分布对象中间件开发应用可以有效地屏蔽底层通信,将精 力主要放在业务逻辑上,提高了生产效率。而且分布对象中间件一般都是稳定的产品,为用 户屏蔽了很多复杂的并发通信逻辑,也提高了应用的稳定性。 但是,在不稳定、有误码的网络上,如果接口中包含了数据量大的数据结构,则很 难调用成功,导致系统无法正常工作。
技术实现思路
本专利技术的目的就是针对上述的不足,提供了一种把接口方法名及参数打包成二进 制的序列、利用传输切片技术、将二进制序列分片发送到服务端,能保证传输的新型的基于 C0RBA接口方法自适应调用方法。 —种基于C0RBA接口方法自适应调用方法,包括客户端和服务端,包括如下步骤 1)客户端将方法标识及输入参数转换成二进制序列,并连接服务端建立会话; 2)客户端利用远程网络自适应传输到服务端,即动态调整发送尺寸大小; 3)服务端将二进制序列转换成方法标识及输入参数; 4)服务端本地方法调用,产生输出参数; 5)服务端将方法标识及输出参数转换成二进制序列; 6)客户端从服务端自适应网络读取二进制序列,即动态调整读取尺寸大小; 7)客户端结束会话,将二进制序列转换成方法标识和输出参数,返回给函数。即完成了自适应调用,完成了接口方法和序列的相互转换,保证了传输。上述步骤1)将接口方法转换为序列,具体是这样实现的 1-1)客户端将输入参数依序转换成CORBA: :Any,写入CORBA: :Any的序列; 1-2)客户端将CORBA: :Any的序列和方法名写入结构FuncParamln ; 1-3)客户端将结构FuncParamln转换成CORBA: :Any,再转换成二进制序列; 1-4)客户端调用BeginSession函数从服务端获取 一 个唯 一 标识会话的SessionID。 将接口方法转换为二进制序列,主要是为了在传输的时候做分片和续传。本方法的优点在于转换时最大程度保留了原有的数据特性,而且具有普遍的适用性,简单易行。使用BeginSession建立会话,是为了支持并发,即当多个客户端同时访问一个服务端的时候,每个客户端都能通过SessionID标识自己的会话,服务端也会通过SessionID标识会话及其数据缓冲区,实现同时支持多个客户端的访问。 上述步骤2)是这样实现的 2-1)客户端将0赋给Pos,配置的长度赋给len ; 2-2)如果Pos大于二进制序列的长度则转步骤6); 2-3)客户端从二进制序列中的指定位置Pos取长度len的数据; 2-4)客户端调用SendData方法将数据发送到服务端,如果Pos+len等于二进制序列的长度,则SendData函数的is_0Ver参数为true,通知服务端输入参数的二进制序列传输完成,否则为false ; 2-5)服务端接收到数据后,根据SessionID,将接收的数据放到会话的输入缓冲 区,如果服务端接收到的is_0Ver参数为true,则转到步骤3); 2-6)如果步骤2-4)失败,检查是否是网络产生的原因,如果不是,报错退出;如果 是,否则就将len减为八分之一,Pos = Pos+len,返回步骤2_2); 2-7)步骤2-4)如果成功,检查是否完成发送,完成转步骤6),否则检查调用的时 间是否小于最小调长时间,如果是,len增大一倍;否则,判断调用时间是否大于最大调短 时间,如果是,则len减少一半,Pos = Pos+len,返回步骤2-3)。 进一步的,上述步骤2-6)中如果步骤2-4)失败,检查是否是网络产生的原因,如果是,就将len减为八分之一,此时,如果len的八分之一小于最小包长度,则len的值设为最小包长度;步骤2-7)中检查调用的时间是否小于最小调长时间,如果是,len增大一倍,此时,如果len的二倍大于最大包长度,则len的值设定为最大包长度。 以上实现可以根据网络带宽,自动调整数据包的大小,找出最适应使用的网络情况的包长度。采用根据调用的时间限定来改变包长度可以将每次调用的时间控制在一定的范围内,从而实现带宽利用率和等待访问时间之间的平衡,其中最小调长时间和最大调短时间是根据长期分布计算的经验得出的。设置最小包长度和最大包长度是为了应对IP包过滤技术。 上述步骤3)是这样实现的 3-1)服务端根据SessionID从会话缓冲区中取出二进制序列,将二进制序列转换 成C0RBA::Any ; 3-2)再将C0RBA: :Any转换成结构FuncParamln ; 3-3)服务端根据结构FuncParamln中的方法标识,将其中的C0RBA: :Any序列逐个转换成输入参数。 采用上述的转换方法具有普遍的适用性,简单实用。根据SessionID管理缓冲区, 支持客户端并发调用。 上述步骤4)是这样实现的服务端将转换出来的输入参数作为输入参数,定义输出参数,调用与FuncParamln中指定的方法名一致的本地的方法,得到输出参数。 上述步骤5)是这样实现的服务端将输出参数依序转换成C0RBA: :Any,写入C0RBA: :Any的序列;再将C0RBA: :Any的序列和方法名写入结构FuncParam0ut ;然后将返回值转换成C0RBA: : Any ,写入结构FuncParam0ut ;然后将结构FuncParam0ut转换成C0RBA: :Any,再转换成二进制序列;最后将二进制序列放入会话的输出缓冲区,等待客户端读取。 输出参数及返回值转换成二进制序列也是为了分片和续传。本转换方法具有普遍的适用性,简单实用。上述步骤6)是这样实现的 6-1)客户端将0赋给Pos ; 6-2)客户端调用SetOutDataLen设置每次输出数据的长度为len(为发送时使用 的长度),如果客户端不设置,服务端使用缺省值; 6-3)客户端调用GetOutData函数访问服务端,服务端根据SessionID从会话的输 出缓冲区的二进制序列的Pos位置取长度为len的数据返回,如果Pos+len等于输出缓冲 区的二进制序列的长度,则Get0utData的data_is_over参数输出为true,否则为false ; 6-4)如果步骤6-3)失败,检查是否是网络产生的原因,如果是,就将len减为八分 之一,然后转6-3);否则报错退出; 6-5)步骤6-3)如果成功,检查data_is_over是否为true,为true为完成转步骤 7),否则检查调用的时间是否小于最小调长时间,如果是,len增大一倍,否则,判断调用时 间是否大于最大调短时间,如果是,则len减少一半,SetOutDataLen设置每次输出数据的 长度为len,调用Pos = Pos+len,返回步骤6-3)。 进一步的,步骤6-4)中如果步骤6-3)失败,检查是否是网络产生的原因,如果是, 就将len减为八分之一,此时,如果len的八分之一小于最小包长度,则len的值设为最小 包长度;步骤6-5)中检查调用的时间是否小于最小调长时间,如果是,len增大一倍,此时, 如果len的八分之一小于最小包长度,则len的值设为最小包长度;而步骤6_5)中判断调 用时间是否大本文档来自技高网...

【技术保护点】
一种基于CORBA接口方法自适应调用方法,包括客户端和服务端,其特征在于包括如下步骤:1)客户端将方溶标识及输入参数转换成二进制序列,并连接服务端建立会话;2)客户端利用远程网络自适应传输到服务端,即动态调整发送尺寸大小;3)服务端将二进制序列转换成方法标识及输入参数;4)服务端本地方法调用,产生输出参数;5)服务端将方法标识及输出参数转换成二进制序列;6)客户端从服务端自适应网络读取二进制序列,即动态调整读取尺寸大小;7)客户端结束会话,将二进制序列转换成方法标识和输出参数,返回给函数。

【技术特征摘要】
一种基于CORBA接口方法自适应调用方法,包括客户端和服务端,其特征在于包括如下步骤1)客户端将方溶标识及输入参数转换成二进制序列,并连接服务端建立会话;2)客户端利用远程网络自适应传输到服务端,即动态调整发送尺寸大小;3)服务端将二进制序列转换成方法标识及输入参数;4)服务端本地方法调用,产生输出参数;5)服务端将方法标识及输出参数转换成二进制序列;6)客户端从服务端自适应网络读取二进制序列,即动态调整读取尺寸大小;7)客户端结束会话,将二进制序列转换成方法标识和输出参数,返回给函数。2. 根据权利要求1所述的基于CORBA接口方法自适应调用方法,其特征在于上述步 骤1)是这样实现的1-1)客户端将输入参数依序转换成CORBA: :Any,写入CORBA: :Any的序列;1-2)客户端将CORBA: :Any的序列和方法名写入结构FuncParamln ;1-3)客户端将结构FuncParamln转换成CORBA: : Any,再转换成二进制序列;1- 4)客户端调用BeginSession函数从服务端获取一个唯一标识会话的SessionID。3. 根据权利要求1所述的基于CORBA接口方法自适应调用方法,其特征在于上述步 骤2)是这样实现的2- 1)客户端将0赋给Pos,配置的长度赋给len ; 2-2)如果Pos大于二进制序列的长度则转;2-3)客户端从二进制序列中的指定位置Pos取长度len的数据;2-4)客户端调用SendData方法将数据发送到服务端,如果Pos+len等于二进制序列的 长度,则SendData函数的is_0Ver参数为true,通知服务端输入参数的二进制序列传输完 成,否则为false ;2-5)服务端接收到数据后,根据SessionID,将接收的数据放到会话的输入缓冲区,如 果服务端接收到的is_0Ver参数为true,则转到步骤3);2-6)如果步骤2-4)失败,检查是否是网络产生的原因,如果是,就将len减为八分之 一,否则报错退出;2- 7)步骤2-4)如果成功,检查是否完成发送,完成转步骤6),否则检查调用的时间是 否小于最小调长时间,如果是,len增大一倍;否则,判断调用时间是否大于最大调短时间, 如果是,则len减少一半,Pos = Pos+len,返回步骤2-3)。4. 根据权利要求3所述的基于C0RBA接口方法自适应调用方法,其特征在于上述步 骤2-6)中如果步骤2-4)失败,检查是否是网络产生的原因,如果是,就将len减为八分之 一,此时,如果len的八分之一小于最小包长度,则len的值设为最小包长度;步骤2_7)中 检查调用的时间是否小于最小调长时间,如果是,len增大一倍,此时,如果len的二倍大于 最大包长度,则len的值设定为最大包长度。5. 根据权利要求1所述的基于CORBA接口方法自适应调用方法,其特征在于上述步 骤3)是这样实现的3- 1)服务端根据SessionID从会话缓冲区中取出二进制序列,将二进制序列转换成 CORBA::Any ;3-2)再将C0RBA: :Any转换成结构FuncParamln ;3-3)服务端根据结构FuncParamln中的方法标识,将其中的C0RBA: : Any序列逐个转换 成输入参数。6....

【专利技术属性】
技术研发人员:罗端红郭长国
申请(专利权)人:山东中创软件商用中间件股份有限公司
类型:发明
国别省市:88[中国|济南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1