IDL调用装置及调用方法制造方法及图纸

技术编号:2919099 阅读:220 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种IDL调用装置及调用方法,其中,调用方法包括:接收服务对象调用请求,该服务对象调用请求中包含标识请求调用的服务对象的服务对象标识与标识客户应用程序的客户应用程序标识;根据服务对象标识与客户应用程序标识,判断客户应用程序与服务对象是否存在于同一个用于加载服务对象的容器进程中;所述客户应用程序与所述服务对象存在于同一个容器进程中时,客户应用程序对服务对象进行本地调用。当客户应用程序与服务对象存在于同一个容器进程中时,采用本发明专利技术,客户应用程序存根可以对服务对象直接进行本地调用,避免了不必要的IDL远程调用所占用的系统资源,提高了IDL调用速度与调用性能。

【技术实现步骤摘要】

本专利技术涉及IDL调用技术,尤其是一种IDL调用装置及调用方法
技术介绍
目前,国际上较具影响力的分布式组件对象标准有以下三种微软公司的分布式组件对象模型(Distributed Component Object Model,以下简称DCOM)、OMG组织的通用对象请求代理架构(Common Object Request BrokerArchitecture,以下简称CORBA)与SUN公司的Java2平台企业版(Java2Platform,Enterprise Edition,以下简称J2EE)。其中,DCOM作为微软公司提出的分布式组件对象模型标准,支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯,但其仅适用于Windows环境;J2EE作为SUN公司提出的分布式对象总线标准,只能用JAVA实现,无法做到组件调用透明化;而CORBA是由OMG组织制订的一种标准的面向对象应用程序体系规范,由对象请求代理(以下简称ORB)、对象服务、公共设施、域接口与应用接口等几个部分组成,其跨平台性优于其它的中间件,可以在各种语言环境下进行分布式系统网络互操作,能在多层分布式系统中应用得更广泛、更灵活,使网络互操作更容易。如图1所示,为现有技术CORBA的结构示意图,其由动态调用接口(以下简称DII)、接口定义语言(以下简称IDL)、对象请求代理(以下简称ORB)核心、接口库(以下简称IR)、动态框架接口(以下简称DSI)与对象适配器(以下简称OA)构成。其中,ORB核心是使得客户应用程序能调用远端对象方法的机制,是CORBA的核心组件,其提供了识别和定位对象、处理连接管理、传送数据和请求通信所需的框架结构。具体地,当客户应用程序要调用远程对象上的方法时,首先要得到这个远程对象引用,然后就可以像调用本地对象一样调用远程对象。当客户应用程序发出一个调用时,ORB核心会将调用的名字、参数等信息编码成标准格式,通过网络传输到服务器上(同一台机器上也如此);服务器将参数解码后传到正确的对象上,该过程即为重定向;对象处理完成后,ORB通过同样的编码/解码方式将调用结果返回给客户应用程序。IDL定义了CORBA对象之间的接口,用IDL描述的接口可以映射到任何编程语言,在确保CORBA的语言无关性方面起着重要的作用。一个IDL文件经IDL编译器编译后自动生成IDL存根(Stub)与IDL框架(Skeleton),“Stub”放置在客户端,“Skeleton”放在服务器端。“Stub”在客户激活调用时,同Client及ORB联系,将IDL定义的对象类型的OMG IDL操作定义映射到客户应用程序激活调用时要调用的一套与编程语言有关的例程。它只实现本地代理并不负责对象的实现,对象引用到ORB的传递由存根实现。“Skeleton”的功能在于接受由“Stub”对“Invoke”的调用而传来的消息,当它收到消息后,就调用真正的GetName方法,然后将结果包装起来迅速传给客户应用程序。通常包含将一个对象上的操作映射到合适的实现与方法上的必要信息,并且提供调度请求到适当方法的必要代码。DII同客户端(Client)、ORB核心、IR连接,客户应用程序使用这些标准的应用程序接口(以下简称API)动态地发起一个CORBA调用,不需“Stub”起作用。DSI是一组标准的API,服务器可以通过它决定一些问题,如调用哪个对象、调用对象的哪个操作、操作的参数是什么等。IR包含有API与网络上存在的数据对象的描述,其作用是为动态激发请求提供信息,即能够在程序运行时刻提供被调用对象的一些信息如对象有哪些操作,每个对象的参数有哪些,参数的数据类型是哪些等。OA提供了服务器端对象与ORB核心之间的适配层,实现请求到服务的调度,一个OA就是一个对象。具有以下功能创建对象引用;确保每个目标对象由一个伺服程序来具体化;获取由一个服务器端ORB调度的请求,并进一步将该请求直接传送给已具体化为目标对象的伺服程序。在CORBA中,分布式调用有“oneway”与“twoway”两种模式。其中,“oneway”是无应答调用,在IDL声明中表现为“oneway”前缀以及函数返回值必须是“void”,系统不保证调用请求的送达;“twoway”是有应答调用,在IDL声明中不带前缀默认为“twoway”,系统保证回送应答。若要实现方法调用与异步消息之间的映射,“Stub”与“Skeleton”需要完成的关键的工作包括分别通过“Marshal”与“Unmarshal”将方法调用编码为请求消息,以及将应答消息解码为返回值与输出参数;支持同步调用,同步调用会阻塞调用者线程,直到调用完成或超时才能处理后续的逻辑。图2所示为现有技术CORBA实现对象引用的原理图,其具体操作如下客户应用程序通过注册的服务名或分布式对象引用获取被调用对象的对象引用;若该对象实现存在相应的“Stub”,则进行后续调用,客户应用程序通过该“Stub”向ORB核心发送对象调用请求;ORB核心将该对象调用请求发送给相应的OA;OA判断该对象调用请求所请求的对象实现是否存在“Skeleton”,若存在,则OA通过该“Skeleton”调用对象中的操作;若不存在,则OA通过ORB向客户应用程序返回系统异常的通知消息,本次调用失败。对象实现的特定操作执行完成后,对象执行操作产生的结果,包括输出参数、输入输出参数、返回值、异常信息等,由服务器端应用程序按照对象调用请求传递与执行路径,将对象执行操作产生的结果逆向返回给客户应用程序。在CORBA平台中,所有服务(Service)都是一个个相互独立的进程,服务之间没有关联,不易于管理;另外,这些服务之间进行IDL调用时,不管调用双方是否在同一台机器上,都必须进行IDL远程调用,即必须将调用转换为消息进行编/解码与调度。当调用服务双方运行在同一台机器上时,一方服务仍然需要对另一方服务进行IDL远程调用,而通过将调用转换为消息进行编/解码与调度的过程占用了有限的CORBA平台系统的资源,随着网络系统的日益庞大与复杂,对CORBA平台系统的资源需求也日益提高,而不必要的资源占用可能会导致CORBA平台系统的资源紧缺,从而无法处理运行在不同机器上的服务双方调用的正常调用请求;并且,将调用转换为消息进行编/解码与调度的过程还需要一定的时间实现,这就影响了IDL调用速度,进一步影响了CORBA平台系统的调用性能,本专利技术人通过研究发现,采用现有技术的该调用方法,调用服务双方运行在同一台机器上时的调用性能并不高于调用双方运行在两台机器上的调用性能,这也进一步限制了CORBA平台系统的工作效率。
技术实现思路
本专利技术实施例所要解决的技术问题是当调用服务对象双方运行在同一台机器上时,仍然需要进行IDL远程调用,占用了不必要的系统资源,且影响了IDL调用速度与调用性能,限制了CORBA平台系统的工作效率。根据本专利技术的一个方面,提供一种IDL调用方法,其包括以下步骤接收服务对象调用请求,该服务对象调用请求中包含标识请求调用的服务对象的服务对象标识与标识客户应用程序的客户应用程序标识;根据所述服务对象标识与所述客户应用程序标识,判断所述客户应用程序与所述服务对象是否存在于同一个本文档来自技高网
...

【技术保护点】
一种IDL调用方法,其特征在于,包括以下步骤:接收服务对象调用请求,该服务对象调用请求中包含标识请求调用的服务对象的服务对象标识与标识客户应用程序的客户应用程序标识;根据所述服务对象标识与所述客户应用程序标识,判断所述客户应用程序与 所述服务对象是否存在于同一个用于加载服务对象的容器进程中;所述客户应用程序与所述服务对象存在于同一个容器进程中时,所述客户应用程序对所述服务对象进行本地调用。

【技术特征摘要】

【专利技术属性】
技术研发人员:李战杰丁凯申海
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1