- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
(2016判断)既然IDL编译器能够根据CORBA组件接口的定义自动生成接口的实现,即能够自动生成客户桩类供客户程序使用,那么,CORBA组件就没有必要由开发人员实现了.
回答:IDL编译器的确能根据组件接口定义生成客户桩类(stub),但是由于IDL本身并不能编写可执行语句,所以stub类对接口的实现无法完成任何业务逻辑,而业务逻辑部分的实现由服务器应用程序上下文中的Servant给出,这部分必须由程序员使用具体的开发语言进行编写.
(2016简答)IDL编译器的输入是什么?主要输出结果是什么?每个文件中的代码的作用是什么?
回答:输入idl文件,其中使用idl语言定义了一些接口以及相关的其他定义,根据所使用的IDL编译器的不同,输出是6-7个文件,其中是使用具体编程语言实现的接口,以生成java实现为例,假设我们定义了一个名为InterfaceName的接口,将会生成以下文件:
_IntefaceNameStub.java
CORBA组件在客户端侧的桩代码,用于将客户端侧的请求编码并向服务器发出.但是客户端代码通常并不直接使用桩代码.
IntefaceName.java
操作接口的派生接口,客户端通常直接操作此接口的方法来实现对远程CORBA组件的调用.
IntefaceNameHelper.java
辅助工具类,其中定义了许多使用功能和支持功能的静态方法.这些方法提供的功能有:
--从Any对象提取或向Any对象插入对象(extract和insert方法);
--从输入/输出流读写对象(read和write方法);
--获取对象的库标识和类型码(id和type方法);
--绑定对象与类型转换操作(bind和narrow方法)等等。
IntefaceNameHolder.java
为传递对象提供支持的类,具体来讲:
--IDL有三种参数传递方式:in、out和inout。
--in类型的参数以及返回结果与Java的传参方式与返回方式完全相同。
--out和inout两种类型的参数允许参数具有返回结果的能力,无法直接映射到Java语言(或者其他不支持通过参数传递结果的编程语言)的参数传递机制,这时Holder类为传递out和inout参数提供了一个托架(holder)。
*In表明实际参数从客户程序传向对象实现
*Out表明数据从实现对象传递给客户程序,并且对象实现无需从客户程序获取参数的初始值
*Inout表明数据从客户程序传给对象实现,然后经对象实现加工后再返回给客户程序
IntefaceNameOperations.java
定义了程序员使用idl语言描述的接口中的所有常量和方法
IntefaceNamePOA.java
定义了CORBA对象的服务端框架代码,功能有:
-解包in类型的参数并将参数传递给对象实现。
-打包返回值与所有out类型的参数。
--打包(marshal):指将特定程序设计语言描述的数据类型转换为CORBA的IIOP流格式。
--解包(unmarshal):从IIOP流格式转换为依赖于具体程序设计语言的数据结构。
*编写对象实现的最简单途径是继承这些POA类,即把它们作为对象实现的基类。
IntefaceNmaePOATie.java(有些版本的IDL编译器可能并不提供这个文件)
用于创建并部署应用程序的类,
(2015判断)IDL编译器能根据IDL描述的接口自动生成特定程序语言stub类,stub类是一个实现了给借口的具体来(ConcreteClass).既然IDL编译器具备根据接口自动生成改接口的实现的能力那么,利用面向对象方法实现某个类时,只需要利用IDL把这个类拟完成的全部成员函数以一个接口的形式定义出来即可,根本不需要实现这些成员函数,IDL编译器会自动实现.
回答:生成特定语言的stub类中不包含具体接口的实现,而是生成一系列的桩代码,提供了为用户有效创建对象并发送请求的机制.而接口所定义的方法和函数是在Server方的实现对象Servant中实现的.另一方面,接口方法的实现根本无法预测,IDL编译器不可能只根据函数原型猜测出函数的具体业务逻辑,让IDL提供接口的具体实现是不现实的.
(2015简答)概述利用IDL编译器构造一个CORBA组件的一般过程.(注意与实现一个采用CORBA组件技术的程序是不一样的,这只是一个组件)
回答:构造一个CORBA组件的过程如下
使用IDL语言编写接口定义文件,注明接口方法,字段,异常等
使用IDL编译器,将接口定义文件编译成某种程序设计语言实现的stub和skeleton,这是对IDL所定义接口的伪实现
基于skeleton,编写服务器端对象的实现程序,这是对IDL所定义接口的业务逻辑实现.
基于stub,编写客户端程序对这个CORBA组件的调用
网络工程师持证人
本人已从事浙江省工程咨询5年,对浙江省内工程信息非常熟悉,可获取新建工程相关联系人、设计院、业主等关键信息。另外从事楼宇自控专业已10年,考取了一建二建等资格证书,有关考试方面的问题(考试心得、方法、学习资料等)都欢饮来咨询交流。
文档评论(0)