- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
4、OMGIDL;1、IDL特点
CORBA标准中最有意义的内容
IDL类似于应用程序接口〔API〕
在客户代码与对象实现〔效劳〕之间定义了
一个清晰的边界
OMGIDL是一个稳定的标准
自1991年公布以来,根本未改变
是OMG其它被采纳标准的根底
已经被ISO采纳〔ISODIS14750〕
; 一个IDL文件可以向多个编程语言映射
IDL是独立于语言的
CORBA标准包含IDL向具体编程语言的映射
已经发布映射标准的语言包括:
C,C++,SmallTalk,Ada95等
IDL支持平台独立性
IDL是独立于平台的
由IDL指定的接口可以在不同的ORB
与平台上一致地表达
只要程序员使用由IDL定义的接口
不会遇到由于使用CORBA导致的
平台移植问题; IDL是一个纯标准,不涉及实现问题:
IDL定义的接口不对对象实现进行任何约束
例如: 编程语言
进程
算法 等
将客户从对象实现细节中清晰地别离出来
有利于:
软件复用
软件演化
这是IDL被广泛接收的重要原因; IDL设计的质量至为重要
IDL通常被用于定义应用系统中的重要接口
例如:
子系统接口
企业模型接口
库接口 等
这些接口是复用、互操作的关键局部
IDL的变化将影响系统中的多个软件模块
好的IDL将: 提高复用与互操作性
提高系统的适应性
降低维护费用
;2、IDL标准
IDL是一个严格的定义
用OMGIDL编写的接口定义
完整地定义了接口并且
完全指定了每个操作的参数
OMGIDL接口提供的信息
被用于开发使用接口操作的客户
客户程序不用纯描述性语言OMGIDL编写
而是用事先定义的映射
从OMGIDL概念映射到的语言编写的;OMGIDL词法遵循C++的词法规那么
OMGIDL语法是已被提议的ANSIC++标准的子集
但比C++更严格:
函数返回类型是强制的
对操作声明的每个正式参数都必须提供名称
由单个符号void组成的参数列表
不允许作为空参数列表的同义字
结构、discriminated联合和枚举要求被标记
??数类型不能定义为简单的int或unsigned
它们必须显式声明为short或long
char不能由signed或unsigned关键字限定;(1)IDL模块(Modules)
为IDL定义创立别离的名空间
防止不同领域中标识之间的冲突
模块可以嵌套
以创立 具有一定长度的
限定范围的 名字引用
名字引用例子:
Part::Assembly::ComponentWidget
;3个模块例子:
moduleAssembly{
typedefstringWidget;
};
modulePart{
typedef::Assembly::WidgetPartWidget;
moduleComponentPart{
typedefPartWidgetComponentWidget;
};
};
CORBAServices对模块进行扩充使用
每个效劳定义了一个或多个模块;(2)IDL接口(Interface)
IDL接口定义分布对象显露的细节
每个IDL接口定义了一个新对象类型
操作签名 是接口的核心
是效劳请求的入口点
接口 清晰地划分了效劳的实现与客户之间的边界
接口的缺乏之处:未显示代码之间的关系;例子:
InterfaceAccount{
//Accountdefinitions
}
InterfaceCheking:Account{
//InheritsallAccountdefinitions
//addsCheckingdefinitions
};
InterfaceSaving:Account{
//InheritsallAccountdefinitions
//addsSavingsdefinitions
};
IDL支持多继承;(3)IDL
文档评论(0)