CN103902283A - 在corba中利用模型转换实现实时异步通信的方法 - Google Patents
在corba中利用模型转换实现实时异步通信的方法 Download PDFInfo
- Publication number
- CN103902283A CN103902283A CN201410074874.1A CN201410074874A CN103902283A CN 103902283 A CN103902283 A CN 103902283A CN 201410074874 A CN201410074874 A CN 201410074874A CN 103902283 A CN103902283 A CN 103902283A
- Authority
- CN
- China
- Prior art keywords
- real
- corba
- time asynchronous
- interface
- definitional language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种在CORBA中利用模型转换实现实时异步通信的方法,包括:定义CORBA组件模型中的初始接口定义语言;制定从初始接口定义语言转换为实时异步接口定义语言的映射规则;根据映射规则将初始接口定义语言通过模型转换技术转换成实时异步接口定义语言;通过模型转换技术根据实时异步接口定义语言生成CORBA组件模型中客户端与对象请求代理之间代码和服务器端与对象请求代理之间代码;利用前述代码实现CORBA组件模型中客户端与服务器端之间实时异步通信的业务逻辑。本发明利用了模型转换技术实现了CORBA系统中组件之间的实时异步通信,提高了客户端的计算性能,为CORBA应用程序的后续开发有效地奠定了基础。
Description
技术领域
本发明属于软件开发技术领域,尤其涉及一种在CORBA中利用模型转换实现实时异步通信的方法。
背景技术
ORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一个由OMG(Object Management Group)组织提出的标准,用于实现分布式计算。
与RPC(Remote Procedure Call,远程过程调用)有所不同,基于面向对象技术的CORBA能够处理和解决远程对象之间的协同操作。微软的DCOM(Distributed Component ObjectModel,分布式组件对象模型)也能解决这个问题,但是它是基于Windows操作系统的,因此它只能在Windows操作系统上很好地实现。CORBA是平台无关以及语言无关的,它使用IDL(Interface Definition Language,接口定义语言)来允许所有语言创建或者使用CORBA组件。
CORBA定义的对象模型会提供以下几个功能特征:
·客户端/服务器端关系:在一个分布式系统中,对象是通过调用服务来和其它对象进行交互的。
·通过引用访问:在一个客户端对象能请求服务器对象之前,客户端必须要获得一个指向服务器端的引用。除此之外,这个调用是通过一个知名的强类型接口被执行的。能被调用的服务和这些服务的签名在编译阶段是已知的,并且依赖于客户端持有的引用的类型。
·同步调用:服务的调用导致了客户端和服务器端之间的同步:一次调用是一个双向的问答式交互。在交互过程中,客户端发送参数,服务器端返回结果。调用会在客户端阻塞:它不得不在继续它的后续工作前等待结果。这是基本调用模式,尽管CORBA提供了单向服务。
·异步调用:不同于同步调用,客户端在服务器返回响应结果前不会被阻塞。所以CORBA组件模型中的异步方法调用允许客户端组件向目标组件发送非阻塞请求。
在CORBA中,IDL用于描述服务。IDL可以被映射到一些编程语言,比如C++或者Java,并且分为2个部分。在客户端的部分叫做IDL Stub,在服务器端的部分叫做IDL Skeleton。重要的是2个部分能用不同的编程语言实现。对象的实现需要基于服务器端上的skeleton来编码。此外,客户端不得不通过stub来访问服务器上的方法。客户端和服务器端是通过ORB(Object Request Broker,对象请求代理)总线来进行通信的。
实际上,CORBA是一种多层客户端/服务器端架构,准确地说是3层客户端/服务器端模式。2层客户端/服务器端模式的问题在于,它们高度耦合,客户端和服务器端使用一种私有的通信协议,这会导致在服务器上的更改会影响客户端。与2层客户端/服务器端模式不同,在3层客户端/服务器端模式中,客户端和服务器端不能与对方直接通信,而是通过代理来通信。CORBA中的代理就是ORB。由于ORB的存在,客户端和服务器端不需要考虑通信细节,相反地只需要考虑功能的实现。所以从这个角度来说,CORBA是一种中间件技术。CORBA的架构如图1所示。
IDL是CORBA系统中的一个重要概念。IDL的语法很像C++和Java。ORB使得CORBA成为平台无关。然而,IDL使得CORBA语言无关。IDL只定义接口而不是实现,就像Java语言中的接口。IDL不是一个真正的编程语言,所以如果使用IDL来编写应用程序,那么有必要把IDL映射成对应的编程语言,比如C++或者Java。在映射之后,客户端的Stub代码和服务器端的Skeleton代码会被生成。实际上,编写IDL是编写CORBA应用程序的第一步,在整个软件设计过程中有着举足轻重的地位。
目前在CORBA中实现异步方法调用的过程中没有设定统一的从初始IDL到异步IDL的映射规则。因此,每次在CORBA上进行软件开发之前,需要重新定义一套适用于软件开发的异步通信IDL的转换规则,给开发过程带来了很大的不便。
发明内容
本发明克服了现有技术中没有规范异步IDL文件等缺陷,提出了一种在CORBA组件模型上利用模型转换技术实现实时异步通信的方法,利用了模型转换技术实现了在CORBA中组件之间的实时异步通信。本发明中提供了统一的映射规则,并提供了基于该映射规则的工具,使得开发者能通过工具快速地自动生成符合该规范的异步IDL文件,既提高了开发效率,又规范了CORBA异步调用的实现方法。
本发明提出了一种在CORBA中利用模型转换实现实时异步通信的方法,CORBA模型组件中包括客户端、服务器端与对象请求代理,包括如下步骤:
步骤一:定义CORBA组件模型中的初始接口定义语言;
步骤二:制定从所述初始接口定义语言转换为实时异步接口定义语言的映射规则;
步骤三:根据所述映射规则将所述初始接口定义语言通过模型转换技术转换成实时异步接口定义语言;
步骤四:通过模型转换技术根据所述实时异步接口定义语言生成所述CORBA组件模型中所述客户端与所述对象请求代理之间的client stub代码和所述服务器端与所述对象请求代理之间的server skeleton代码;
步骤五:利用所述client stub代码和所述server skeleton代码实现所述CORBA组件模型中客户端与服务器端之间实时异步通信的业务逻辑。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,步骤一中定义所述初始接口定义语言包括如下步骤:
步骤A1:通过进行需求分析得到需求分析报告;所述需求报告包括待定义的模块、接口、属性和操作;
步骤A2:利用所述初始接口定义语言的语法定义接口的属性信息;所述属性信息包括属性的类型;
步骤A3:利用所述初始接口定义语言的语法定义接口的操作信息;所述操作信息包括接口的操作,操作的参数列表以及操作的返回类型。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,步骤二中通过如下步骤制定映射规则:
步骤B1:定义在所述初始接口定义语言转换为所述实时异步接口定义语言的转换过程中所述初始接口定义语言中的操作的映射规则;
步骤B2:定义所述转换过程中所述初始接口定义语言的的属性的映射规则;
步骤B3:定义所述实时异步接口定义语言的异常处理机制;
步骤B4:定义所述转换过程中响应处理器的映射规则;
步骤B5:定义所述转换过程和中所述响应处理器中异常处理操作的映射规则;
步骤B6:定义所述实时异步接口定义语言中的连接器;
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,所述步骤二进一步包括:步骤B7:启动所述CORBA组件模型中所述客户端与所述服务器端之间的实时异步通信。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,步骤三中的所述模型转换技术是操作型QVT模型转换技术,转换过程包括如下步骤:
步骤C1:为所述操作型QVT模型转换技术确定模型类型;所述模型类型中包括映射体;
步骤C2:将所述映射规则应用至所述映射体中,所述操作型QVT模型转换技术根据所述映射体实现所述初始接口定义语言转换成实时异步接口定义语言。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,所述步骤四包括如下步骤:
步骤D1:定义实时异步接口定义语言转换成所述CORBA组件模型的编程语言的转换规则;
步骤D2:根据所述转换规则将所述实时异步接口定义语言转换成Client Stub代码;
步骤D3:根据所述转换规则将所述实时异步接口定义语言转换成Server Skeleton代码。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,所述编程语言包括Java、C++。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,所述步骤五包括如下步骤:
步骤E1:在所述CORBA组件模型中,所述客户端利用所述Client Stub代码实现与代理端之间的业务逻辑;
步骤E2:在所述CORBA组件模型中,所述服务器端利用所述Server Skeleton代码实现与所述代理端之间的实时异步通信的业务逻辑。
本发明提出的所述在CORBA中利用模型转换实现实时异步通信的方法中,定义实时异步通信的业务逻辑之后进一步包括:
步骤E3:所述客户端与所述服务器端之间实时编译并运行程序。
本发明的有益效果是,成功地利用了模型转换技术实现了CORBA系统中组件之间的实时异步通信,使得在客户端向服务器端发送请求后直到服务器端做出响应期间,客户端不会被阻塞等待,以此提高了客户端的计算性能,为CORBA应用程序的后续开发有效地奠定了基础。
附图说明
图1是本发明中CORBA体系结构的示意图。
图2是本发明在CORBA中利用模型转换实现实时异步通信的方法的流程图。
图3是本发明中的步骤一定义初始接口定义语言的流程图。
图4是本发明中的步骤二定义初始接口定义语言转换到实时异步接口定义语言的映射规则的流程图。
图5是本发明中的步骤四利用模型转换技术将实时异步IDL转换成CORBA中的clientstub代码和serverskeleton代码的流程图。
图6是本发明中的步骤五实现CORBA客户端和服务器端的业务逻辑,并且编译和运行程序流程图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
如图2所示,本发明的在CORBA组件模型上利用模型转换技术实现实时异步通信的实现方法包括以下步骤:
步骤S1:定义CORBA组件模型中的初始接口定义语言(Interface Definition Language,接口定义语言);
步骤S2:制定从所述初始接口定义语言转换为实时异步接口定义语言的映射规则;
步骤S3:根据所述映射规则将所述初始接口定义语言转换成实时异步接口定义语言;
步骤S4:通过模型转换技术根据所述实时异步接口定义语言生成所述CORBA组件模型中的client stub代码和server skeleton代码;
步骤S5:利用所述client stub代码和所述server skeleton代码实现所述CORBA组件模型中客户端与服务器端之间实时异步通信的业务逻辑、编译和运行程序。以下对于每个步骤作进一步说明。
如图3所示,步骤S1中根据需求定义初始接口定义语言包括下述步骤:
步骤A1,分析定义初始接口定义语言时的需求信息,得到需求分析报告。从需求分析报告中得出要定义哪些模块,接口,属性或者操作等等,并予之合理的命名。
步骤A2根据需求分析报告,利用初始接口定义语言的语法定义接口的属性信息包括属性以及属性的类型,前缀等等;
步骤A3,根据需求分析报告,利用初始接口定义语言的语法定义接口的操作,操作的参数列表以及操作的返回类型,从而定义了生成初始接口定义语言。该步骤A3之后进一步包括步骤A4,在上述过程中添加必要的注释,使得实现接口的开发人员能更有效准确地理解该接口的功能。
通过上述步骤A1至A4后生成一个后缀名为“.idl”的文件,该文件即为所定义的初始接口定义语言。以上各步骤可以通过在文本文件中使用初始接口定义语言的语法进行编写,编写完毕后把文本的后缀名从“.txt”更改为“.idl”即可。该文件中的部分定义如下代码片段所示,其中主要定义了接口中主要元素,包括接口的属性信息(包括属性的类型,前缀)及操作等,该文件的语法采用BNF范式定义:
如图4所示,步骤S2中定义初始IDL到实时异步IDL的映射规则包括如下步骤:
步骤B1,定义在初始接口定义语言转换为实时异步接口定义语言的转换过程中初始接口定义语言中的操作(Operation)的映射规则。一个已知的从初始IDL转换而成的实时异步IDL的操作的签名有如下特点:1)void返回类型;2)ami_<nameOfOperation>,其中<nameOfOperation>代表操作的名称。实时异步IDL操作的参数按如下顺序制定:
1)指向一个类型明确的响应处理器(ReplyHandler)的引用。如果在操作被调用时,这个响应处理器的引用是空值(NULL),那么该调用将不会有任何返回响应;
2)初始IDL操作的参数名称保持不变,依次附加上in和inout参数;
3)忽略out参数,不做任何处理。
4)参数列表中添加时间约束参数time_constraint,并且添加操作默认返回值defaultReturn,以此来达到异步通信的实时性。在实现时,如果异步调用的操作在time_constraint单位时间内能执行得到结果,那么服务器端会立即通过回调来返回执行结果。如果在time_constraint单位时间内,操作没有得到执行结果,那么服务器端将停止继续执行该操作剩下的所有代码,而是返回一个默认值defaultReturn。
步骤B2,定义从初始IDL转换到实时异步IDL的过程中属性(Attribute)的映射规则。对应于一个接口的属性的getter和setter操作在实时异步IDL中的签名有着如下的结构:
1)只读(read-only)属性没有setter操作;
2)void返回类型,接着是操作的名称:
·ami_get_<attributeName>被用于获得属性的值,其中<attributeName>代表属性的名称;
·ami_set_<attributeName>被用于修改属性的值,其中<attributeName>代表属性的名称,并且该属性必须不是只读的。
实时异步IDL的操作有如下的参数:
1)一个响应处理器的对象引用,参数名称叫做reply_handler;
2)为了转换成实时异步IDL所需添加的额外的参数有如下:
·每个属性的getter操作不需要任何额外的参数;
·对于属性的setter操作,需要添加一个参数:in<attrType>attr_<
attributeName>,其中<attrType>代表属性的类型,<attributeName>代表属性的名称。只读属性不能有对应的setter操作。
步骤B3,定义实时异步IDL中的异常处理机制。响应处理器接口是通过调用一个抛出异常的操作来处理异常的。因此,异常响应以AMI::ExceptionHolder接口的形式发送到响应处理器,AMI::ExceptionHolder接口包含了能抛出被封装的异常的操作。
AMI::ExceptionHolder接口封装了异常数据和相应的信息,以此来把数据置入抛出的异常中。下列IDL代码中声明了AMI::ExceptionHolder接口:
};上述代码中,throw_exception()操作用于抛出异常。
步骤B4,定义从初始IDL转换到实时异步IDL的过程中响应处理器(Reply-Handler)的映射规则。从初始IDL到实时异步IDL的映射过程中,每个接口都会有一个响应处理器。对于异步调用来说,客户端不得不实现并注册一个响应处理器。当客户端接收到一个回调时,响应处理器将会工作。响应处理器的接口名称为AMI_<interfaceName>ReplyHandler,其中<interfaceName>是初始IDL中接口的名称。
在调用一个异步操作之前,客户端必须要创建一个响应处理器的实例,并把它当做操作的一个参数。另外,一个响应处理器实例能被分配到多个调用中。如果客户端想要分别这些调用,那么客户端可以为它们各自分配一些唯一的id号码。
每个操作相对应的响应处理器上包含着具有以下组成部分的操作:
1)void返回类型;
2)操作名称;
3)参数列表;
4)如果操作有返回值,那么在实时异步IDL中其类型必须设置为return-Value。
在响应处理器中,名称为<attributeName>的属性将会映射出下列操作:
1)void返回类型;
2)getter操作:get_<attributeName>;
3)setter操作:set_<attributeName>。只有当属性不是只读的时候才会有setter操作;
4)getter操作只有一个参数:in<attrType>returnValue,其中名称为returnValue属性是属于<attrType>类型的,setter操作没有参数。
步骤B5,定义从初始IDL转换到实时异步IDL的过程中,响应处理器中异常处理操作的映射规则。当实时异步调用失败时,响应处理器中的exception操作会被生成,以此来传递异常。在响应处理器中生成这些操作需要遵循下列规则。
对于名称为operationName的操作,在响应处理器中将会生成以下操作:void<operationName>_exception(in AMI::ExceptionHolder holder)。对于名称为attributeName的属性,在响应处理器中将会生成以下操作:void get_<attribu-teName>_exception(inAMI::ExceptionHolder holder)。对于名称为attribute-Name的非只读属性,在响应处理器中将会生成以下操作:void set_<attribute-Name>_exception(in AMI::ExceptionHolderholder)。
步骤B6,定义实时异步IDL中的连接器(Connector)。实际上,客户端不会再真正的目标组件上调用操作,而是在连接器上调用操作。所以对于一个实时异步IDL的接口,将会生成一个连接器。定义的连接器模板如下:
进一步的,在步骤B6之后还包括步骤B7,启动CORBA中客户端与服务器端之间的实时异步通信,可以通过以下两个步骤来启动CORBA这种的实时异步通信。第一步就是声明接口预处理指令,比如:#pragma ami interface<interfaceName>。第二步是识别启动实时异步通信的容器。其中,必须标注IDL来启动容器,比如:#pragma ami receptacle<receptacleName>。上述步骤以预处理的方式通知编译器以下代码中包含了实时异步通信的功能,让编译器为编译相关程序做好相关准备,并且通知系统需要启动容器来为实时异步通信的功能的实现提供必要的软件配置以及环境。
步骤S3中根据之前定义的映射规则用模型转换技术把初始IDL转换成实时异步IDL包括如下步骤:
步骤C1,为操作型QVT(Query/View/Transformation,查询/视图/转换)模型转换技术确定模型类型。用一个元模型(一组MOF包)和一个条件集合来定义一个模型类型。模型类型为编写转换定义带来了精确的灵活性。MOF(Meta Object Facility,元对象设施)提供了一组CORBA接口,用来定义和操作一组可互操作的元模型。MOF是基于CORBA分布式开发环境中的一个关键的构件,它加强了元数据的管理和分布式对象环境中的元数据的互操作性。MOF也定义了一个简单的元模型的元模型,它有着充足的语义在不同的领域中描述元模型。对于集成工具和应用程序来说,跨领域的元模型的集成是必要的。MOF的架构实际上就是一个分层的元数据结构。该架构分4层,分别是用户对象层,模型层,元模型层和元元模型层。
步骤C2,为操作型QVT(Query/View/Transformation,查询/视图/转换)模型转换技术实现映射操作。映射操作在语法上是由一个签名,一个卫士(when子句),一个映射体以及一个后置条件(where子句)来描述的。现在可以根据之前定义的映射规则并利用QVT模型转换技术在代码层实现映射操作。需要把一个或多个元模型元素映射到一个或多个目标元素。源和目标的类型要用操作签名来表示。比如,现有对象A到对象B的多对多映射。操作型QVT模型转换技术已经具有代码层的实现,其表现为一个软件开发框架。
在该框架中,此映射操作表现为以下代码:mapping A::AtoB():B;其中“::”符号前的“A”字样代表源类型,最后个“B”字样代表目标类型。映射操作调用表现为以下代码:a.map AtoB();一个映射操作的定义主要有“mapping”关键字、源类型、目标类型、when子句、where子句和映射体组成。其中的when子句实际上是一个布尔表达式,如果该布尔表达式返回“假”的真值,那么映射体中的代码将不会被执行,也就是说映射失败。只有当when子句返回“真”的真值时,映射才能按照映射体中定义的映射规则进行映射。Where子句代表一个映射操作的后置条件,也是由布尔表达式组成。如果where子句返回“假”的真值,那么程序会抛出一个异常,并且自动终止。映射体则包含了变量的赋值、中间结果的保留,其中也可以使用查询,映射以及解析调用。之前步骤中所定义的从初始IDL到实时异步IDL的映射规则就应该被包含在映射体中。
如图5所示,步骤S4中利用模型转换技术将实时异步IDL转换成CORBA中的client stub代码和server skeleton代码(均用Java语言实现)包括如下步骤:
步骤D1,定义从初始IDL到适用于CORBA组件模型的Java代码的转换规则。首先定义基本类型的转换规则。以下表1展示了基本类型的转换规则。
表1IDL与Java代码转换规则示例
IDL类型 | Java类型 |
short | short |
unsigned short | short |
long | int |
unsigned long | int |
boolean | boolean |
float | float |
double | double |
fixed | java.math.BigDecimal |
char | char |
string | java.lang.String |
因为Java语言不支持无符号类型,所以需要保证在Java中,大型无符号IDL类型的值在作为负数时能被正确处理。其次,需要定义接口的映射。一个非抽象的IDL接口会被映射成两个公共的Java接口:一个签名接口以及一个操作接口。签名接口扩展了IDLEntity类,与原先IDL接口有着相同的名称,当指定类型的接口在其它接口中被使用时,它在方法声明中被当做签名类型使用。操作接口的名称由原先IDL接口的名称和后缀“_operation”组成,在服务器端映射中被使用。
步骤D2,根据转换规则将实时异步接口定义语言经过转换生成Client Stub代码。初始IDL(circle.idl文件)定义了一个代表圆圈的接口,该接口包含了代表圆半径的属性以及计算圆周长和圆面积的操作。该初始的IDL如下代码表述:
上述初始的IDL变换为实时异步IDL之后,经过上述转换得到client stub,client stub中包含了以下Java文件:1)circle.java文件定义了接口circle,直接从circle.idl直接映射得出。2)circleStub.java文件定义了circleStub类。该类包含了客户端的getter和setter方法,封装了ORB的功能,截获客户端的调用请求,并执行Marshaling/Unmarshaling操作,最终获得调用的结果。3)circleHolder.java文件定义了circleHolder类,用于处理out和inout类型的参数。4)circleOperation.java文件定义了circleOperation接口,被服务器端使用。当客户端使用回调时,也会需要这个接口。
步骤D3根据转换规则将实时异步接口定义语言经过转换生成Server Skeleton代码。同样以上述初始的IDL为例,经过转换之后,server skeleton包含了以下Java文件:1)circlePOA.java文件定义了类circlePOA。服务器端的实现代码会扩展这个类。2)circlePOATie.java文件定义了circlePOATie类,这个类在使用代理方式创建服务器端对象时会被使用。
如图6所示,步骤S5中实现CORBA客户端和服务器端的业务逻辑,并且编译和运行程序包括如下步骤:
步骤E1,在CORBA组件模型中,客户端利用Client Stub代码实现与代理端之间的业务逻辑。通常来说,客户端主程序需要包含以下内容:首先,需要初始化ORB对象;其次,需要获得Servant对象的引用;最后,调用以上的操作。用户可以使用读取文件的方法获得对象的引用。
步骤E2,在CORBA组件模型中,服务器端利用Server Skeleton代码实现与代理端之间的业务逻辑。通常来说,服务器端主程序需要包含以下内容:首先需要初始化ORB;再者,需要创建Servant对象;其次,激活POA管理器;最后通知ORB随时准备着接受请求。对于用户来说,只需要手动编写创建Servant对象的代码,其他步骤的代码对于所有服务器端程序来说都大致相同。
步骤E3,实时编译并运行程序,实现客户端与服务器端之间实时异步通信的业务逻辑、编译和运行程序。本发明的技术方案提出了在CORBA中利用模型转换技术实现实时异步通信的实现方法。可见,本发明建立了一套能够自动将初始接口定义语言转换为实时异步接口定义语言的方法,从而能够快速地实现客户端与服务器端之间的实时异步通信,实时异步通信使得在客户端向服务器端发送请求后直到服务器端做出响应期间,客户端不会被阻塞等待,以此提高了客户端的计算性能,为CORBA应用程序的后续开发奠定了有效的基础。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (9)
1.一种在CORBA中利用模型转换实现实时异步通信的方法,CORBA模型组件中包括客户端、服务器端与对象请求代理,其特征在于,包括如下步骤:
步骤一:定义CORBA组件模型中的初始接口定义语言;
步骤二:制定从所述初始接口定义语言转换为实时异步接口定义语言的映射规则;
步骤三:根据所述映射规则将所述初始接口定义语言通过模型转换技术转换成实时异步接口定义语言;
步骤四:通过模型转换技术根据所述实时异步接口定义语言生成所述CORBA组件模型中所述客户端与所述对象请求代理之间的client stub代码和所述服务器端与所述对象请求代理之间的server skeleton代码;
步骤五:利用所述client stub代码和所述server skeleton代码实现所述CORBA组件模型中客户端与服务器端之间实时异步通信的业务逻辑。
2.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,步骤一中定义所述初始接口定义语言包括如下步骤:
步骤A1:通过进行需求分析得到需求分析报告;所述需求报告包括待定义的模块、接口、属性和操作;
步骤A2:利用所述初始接口定义语言的语法定义接口的属性信息;所述属性信息包括属性的类型;
步骤A3:利用所述初始接口定义语言的语法定义接口的操作信息;所述操作信息包括接口的操作,操作的参数列表以及操作的返回类型。
3.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,步骤二中通过如下步骤制定映射规则:
步骤B1:定义在所述初始接口定义语言转换为所述实时异步接口定义语言的转换过程中所述初始接口定义语言中的操作的映射规则;
步骤B2:定义所述转换过程中所述初始接口定义语言的的属性的映射规则;
步骤B3:定义所述实时异步接口定义语言的异常处理机制;
步骤B4:定义所述转换过程中响应处理器的映射规则;
步骤B5:定义所述转换过程和中所述响应处理器中异常处理操作的映射规则;
步骤B6:定义所述实时异步接口定义语言中的连接器。
4.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,所述步骤二进一步包括:步骤B7:启动所述CORBA组件模型中所述客户端与所述服务器端之间的实时异步通信。
5.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,步骤三中的所述模型转换技术是操作型QVT模型转换技术,转换过程包括如下步骤:
步骤C1:为所述操作型QVT模型转换技术确定模型类型;所述模型类型中包括映射体;
步骤C2:将所述映射规则应用至所述映射体中,所述操作型QVT模型转换技术根据所述映射体实现所述初始接口定义语言转换成实时异步接口定义语言。
6.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,所述步骤四包括如下步骤:
步骤D1:定义实时异步接口定义语言转换成所述CORBA组件模型的编程语言的转换规则;
步骤D2:根据所述转换规则将所述实时异步接口定义语言转换成Client Stub代码;
步骤D3:根据所述转换规则将所述实时异步接口定义语言转换成Server Skeleton代码。
7.如权利要求5所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,所述编程语言包括Java、C++。
8.如权利要求1所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,所述步骤五包括如下步骤:
步骤E1:在所述CORBA组件模型中,所述客户端利用所述Client Stub代码实现与代理端之间的业务逻辑;
步骤E2:在所述CORBA组件模型中,所述服务器端利用所述Server Skeleton代码实现与所述代理端之间的实时异步通信的业务逻辑。
9.如权利要求6所述的在CORBA中利用模型转换实现实时异步通信的方法,其特征在于,定义实时异步通信的业务逻辑之后进一步包括:
步骤E3:所述客户端与所述服务器端之间实时编译并运行程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410074874.1A CN103902283B (zh) | 2014-03-03 | 2014-03-03 | 在corba中利用模型转换实现实时异步通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410074874.1A CN103902283B (zh) | 2014-03-03 | 2014-03-03 | 在corba中利用模型转换实现实时异步通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902283A true CN103902283A (zh) | 2014-07-02 |
CN103902283B CN103902283B (zh) | 2017-04-19 |
Family
ID=50993626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410074874.1A Active CN103902283B (zh) | 2014-03-03 | 2014-03-03 | 在corba中利用模型转换实现实时异步通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902283B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832045A (zh) * | 2017-10-16 | 2018-03-23 | 北京京东尚科信息技术有限公司 | 跨编程语言接口转换的方法和装置 |
CN109561114A (zh) * | 2017-09-26 | 2019-04-02 | 中国电力科学研究院 | 一种测控装置的通讯方法及系统 |
CN111309304A (zh) * | 2020-02-11 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
CN111474897A (zh) * | 2020-04-07 | 2020-07-31 | 中科新松有限公司 | 一种基于组件的机器人编程方法和计算机可读存储介质 |
CN113296764A (zh) * | 2021-05-27 | 2021-08-24 | 成都谐盈科技有限公司 | 一种基于模型驱动的idl文件生成系统、方法及终端 |
CN113360136A (zh) * | 2021-05-31 | 2021-09-07 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
CN116915829A (zh) * | 2018-08-31 | 2023-10-20 | 萨伯康姆有限责任公司 | 光学通信系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020054206A (ko) * | 2000-12-27 | 2002-07-06 | 오길록 | 엔터프라이즈 자바빈즈 기반의 클라이언트/서버간의통신방법 |
DE10041082B4 (de) * | 2000-08-22 | 2004-02-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren zum Aufzeichnen der Kommunikation zwischen einem Client und einem Server |
WO2005027455A1 (en) * | 2003-09-17 | 2005-03-24 | Research In Motion Ltd. | System and method for asynchronous wireless services using reverse service schema generation |
CN1751492A (zh) * | 2003-02-14 | 2006-03-22 | 捷讯研究有限公司 | 在网络通信中压缩报文的系统和方法 |
-
2014
- 2014-03-03 CN CN201410074874.1A patent/CN103902283B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10041082B4 (de) * | 2000-08-22 | 2004-02-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren zum Aufzeichnen der Kommunikation zwischen einem Client und einem Server |
KR20020054206A (ko) * | 2000-12-27 | 2002-07-06 | 오길록 | 엔터프라이즈 자바빈즈 기반의 클라이언트/서버간의통신방법 |
CN1751492A (zh) * | 2003-02-14 | 2006-03-22 | 捷讯研究有限公司 | 在网络通信中压缩报文的系统和方法 |
WO2005027455A1 (en) * | 2003-09-17 | 2005-03-24 | Research In Motion Ltd. | System and method for asynchronous wireless services using reverse service schema generation |
Non-Patent Citations (3)
Title |
---|
DU_HANG2007: "Corba的原理和实现", 《HTTP://WENKU.BAIDU.COM/VIEW/13694D0016FC700ABB68FC53.HTML?FROM=SEARCH》 * |
张宝菊 等: "CORBA IDL 初探", 《微型机与应用》 * |
李晓春 等: "一种基于QVT的模型转换技术", 《吉林大学学报(理学版)》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109561114A (zh) * | 2017-09-26 | 2019-04-02 | 中国电力科学研究院 | 一种测控装置的通讯方法及系统 |
CN109561114B (zh) * | 2017-09-26 | 2021-04-30 | 中国电力科学研究院有限公司 | 一种测控装置的通讯方法及系统 |
CN107832045A (zh) * | 2017-10-16 | 2018-03-23 | 北京京东尚科信息技术有限公司 | 跨编程语言接口转换的方法和装置 |
CN116915829A (zh) * | 2018-08-31 | 2023-10-20 | 萨伯康姆有限责任公司 | 光学通信系统 |
CN111309304A (zh) * | 2020-02-11 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
CN111309304B (zh) * | 2020-02-11 | 2023-07-11 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
CN111474897A (zh) * | 2020-04-07 | 2020-07-31 | 中科新松有限公司 | 一种基于组件的机器人编程方法和计算机可读存储介质 |
CN113296764A (zh) * | 2021-05-27 | 2021-08-24 | 成都谐盈科技有限公司 | 一种基于模型驱动的idl文件生成系统、方法及终端 |
CN113296764B (zh) * | 2021-05-27 | 2023-11-03 | 成都谐盈科技有限公司 | 一种基于模型驱动的idl文件生成系统、方法及终端 |
CN113360136A (zh) * | 2021-05-31 | 2021-09-07 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
CN113360136B (zh) * | 2021-05-31 | 2023-11-03 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103902283B (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902283A (zh) | 在corba中利用模型转换实现实时异步通信的方法 | |
US5724503A (en) | Method and apparatus for interpreting exceptions in a distributed object system | |
US6226692B1 (en) | Method and system for constructing software components and systems as assemblies of independent parts | |
US7546606B2 (en) | System and method using a connector architecture for application integration | |
US5737607A (en) | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats | |
CN101847100B (zh) | 扩展软件应用的方法和装置 | |
EP0483037A2 (en) | Remote and batch processing in an object oriented programming system | |
US7904111B2 (en) | Mobile exchange infrastructure | |
JPH11119986A (ja) | 通信連携情報生成装置、3階層クライアント/サーバシステムおよび通信連携情報生成プログラムを記録した媒体 | |
JPH11353182A (ja) | 分散オブジェクトシステムにおいて可変長識別子の効率的表現のための方法及び装置 | |
CN101655806B (zh) | 一种软件系统内部组件数据交互方法及数据交互系统 | |
CN100485687C (zh) | 建立无连接的数据编程模型的方法、装置及其应用 | |
Young et al. | Evaluation of middleware architectures in achieving system interoperability | |
Specification | Object management group | |
Yahiaoui et al. | Developing CORBA-based distributed control and building performance environments by run-time coupling | |
Chiang | Wrapping legacy systems for use in heterogeneous computing environments | |
JP2005527039A (ja) | Corba環境でumlモデルとその実装との間のリンクを確保するソフトウェア開発ツール | |
Bräuer et al. | Model-level integration of the OCL standard library using a pivot model with generics support | |
JP2003157242A (ja) | 分散処理システム及び連携用アダプタ並びに分散処理システムにおける連携方法及びプログラム | |
CN100498833C (zh) | 科学计算网格的远程可视化方法 | |
Steinder et al. | A framework for inter-ORB request level bridge construction | |
Sheu et al. | A New Architecture for Integration of CORBA and OODB | |
CN112445466A (zh) | 将本地方法动态封装为服务的方法 | |
KR20110048015A (ko) | 타깃 시스템의 데이터에 액세스를 제공하는 컴퓨터 방법 및 시스템 | |
Robinson | Remote procedure call: a stepping stone towards ODP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |