IDL文件是什么详细介绍

2023-05-16

IDL是什么详细介绍:

IDL(Interface Definition Language)即接口定义语言,是CORBA规范的一部分,是跨平台开发的基础。IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数 据类型。可变化 IDL 基本类型 整数类型 OMG IDL 摒弃int 类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet 或枚举型,不能是 any 类型或用户定义的类型。OMG IDL数组类型IDL array 和 sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。

IDL(Interface Definition Language)即接口定义语言,是CORBA规范的一部分,是跨平台开发的基础。IDL提供一套通用的数据类型,并以这些数据类型来定义更为复杂的数 据类型。可变化 IDL 基本类型 整数类型 OMG IDL 摒弃int 类型在不同平台上取值范围不同带来的多义性的问题。常数定义常数可以是整数、字符、浮点数、字符串、Boolean、octet 或枚举型,不能是 any 类型或用户定义的类型。OMG IDL数组类型IDL array 和 sequence,可以轻易地被映射到实现语言中。序列可以包含所有类型的元素,不管是基本类型还是用户定义的类型。

织梦内容管理系统


OMG IDL文件概述
  从本质上讲,OMG IDL接口定义语言不是作为程序设计语言体现在CORBA体系结构中的,而是用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。OMG IDL文件描述数据类型和方法框架,而服务对象则为一个指定的对象实现提供上述数据和方法。
   OMG IDL文件描述了服务器提供的服务功能,客户机可以根据该接口文件描述的方法向服务器提出业务请求。在大多数CORBA产品中都提供IDL到相关编程语言 的编译器。程序设计人员只需将定义的接口文件输入编译器,设定编译选项后,就可以得到与程序设计语言相关的接口框架文件和辅助文件。

dedecms.com

IDL文件应用过程如图1所示。

dedecms.com

图1 OMG IDL文件编译过程 copyright dedecms


 在语法规 则方面,类似于C++或Java中关于接口或对象的定义,OMG IDL增加了一些构造方法支持IDL特有的方法调用机制。OMG IDL只是一种说明性的语言,支持C++语法中的常量、类型和方法的声明。采用OMG IDL这样的说明性语言,其目的在于克服特定编程语言在软件系统集成及互操作方面的限制,这正是CORBA的诱人之处,同样也体现出采用CORBA构造分 布式应用程序在网络时代的强大生命力。OMG IDL已经为C、C++、Java等主要高级程序设计语言制定了IDL到高级编程语言的映射标准。项目开发人员可以根据需要选择自己最熟悉的编程语言来独 立开发基于CORBA的应用,而对软件系统的互操作能力不产生影响。
OMG IDL的语法规则
1. OMG IDL文件举例
  module Compute
  { typedef double radius;
  typedef long times;
  interface PI
  { double getResult( in radius aRadius, in times time); }
  }
  上述接口定义文件主要用于客户端向服务对象提出请求:计算π值。因此,模块中定义了一个方法getResult(),以圆的直径(aRadius)和迭代次数(times)作为该方法的输入参数。
2. OMG IDL词法规则
  OMG IDL采用ASCII字符集构成接口定义的所有标识符。标识符由字母、数字和下划线的任意组合构成,但第一个字符必须是ASCII字母。IDL认为大写字母和小写字母具有相同的含义,例如anExample和AnExample是相同的。

copyright dedecms


  与C++和Java类似,采用以“/*”开始,以“*/”结束来注释一段代码,以“//”开始注释从“//”开始直至行尾的所有内容。
  另外,IDL保留了47个关键字,程序设计人员不能将关键字用作变量或方法名。需要注意的是关键字的大小写,例如:
  typedef double context;
  //错误:定义的变量context是关键字
  typedef double CONTEXT;
  //错误:CONTEXT与关键字context冲突
3. 数据类型
  (1)基本数据类型:OMG IDL基本数据类型包括short、long和相应的无符号(unsigned)类型,表示的字长分别为16、32位。
  (2)浮点数类型:OMG IDL浮点数类型包括float、double和long double类型。其中float表示单精度浮点数,double表示双精度浮点数,long double表示扩展的双精度浮点数。
  (3)字符和超大字符类型:OMG IDL定义字符类型char为面向字节的码集中编码的单字节字符; 定义类型wchar为从任意字符集中编码的超大字符。
  (4)逻辑类型:用boolean关键字定义的一个变量,取值只有true和false。
  (5)八进制类型:用octet关键字定义,在网络传输过程中不进行高低位转换的位元序列。

本文来自织梦


  (6)any数据类型:引入该类型用于表示OMG IDL中任意数据类型。
4. 常量
  OMG IDL用const关键字声明一个常量,用于模块(module)或接口(interface)中定义保持不变的量,如:
  const double PI = 3.1415926;
  在IDL中,可以定义long、unsigned long、unsigned short、char、boolean、float、double、string类型的常量。
5. 构造数据类型
  类似于C和C++的语法规则,OMG IDL中构造数据类型包括结构、联合、枚举等形式。如下例:
(1)结构类型:
  typedef long GoodsNumber;
  struct
  { GoodsNumber number;
  string name;
  float price; }
(2)联合类型:
  union stockIn switch( short )
  { case 1: stocker : long;
  case 2: goodsName1 : string;
  case 3: goodsName2 : string; }
(3)枚举类型:
  enum GoodsStatus { GOODS_SALED, GOODS_INSTOCK};
6. 数组类型
  OMG IDL的数组类型提供了多维定长、统一数据格式的数据存储方式——数组。每一维的长度必须在定义时给定,所有数据单元必须存储相同类型的元素。如下例定义一个长度为20×100的整数数组: dedecms.com
  typedef long aDimension[20][100];
7.模板(template)类型
  OMG IDL提供两种类型的模板:
(1) 序列(sequence)类型:
  用该方法定义长度可变的任意数值类型的存储序列,通常在定义时可以指定长度,也可以不指定,如:
  typedef sequence <long,80> aSequence;
  //长度定义为80
  typedef sequence <long> anotherSequence;
  //长度不定
(2) 字符串(string)序列:
  同样对于字符串序列类型,也有两种定义方式:
  typedef string <80> aName; //长度定义为80
  typedef string anotherName; //长度不定
8.接口(interface)
  在前几讲中,均提到了CORBA接口,接口作为服务对象功能的详细描述,封装了服务对象提供服务方法的全部信息,客户对象利用该接口获取服务对象的属性、访问服务对象中的方法。
  接口用关键字interface声明,其中包含的属性和方法对所有提出服务请求的客户对象是公开的,如下例:
  interface JobManager
  { readonly attribute string FirstName;
  attribute string status;
  string QueryJobStatus( in long Number, out string property); } 本文来自织梦 Tags:,介绍,详细,什么,类型,定义,OMGIDL,数据,接口,I

淘宝店铺金冠大全   09年最新款流行女装   时尚男装   史上最有效的减肥方法   化妆品优惠大折扣  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDL文件是什么详细介绍 的相关文章

  • IDL(ENVI/IDL) 简(jian)明(lou)教程:一、IDL基础

    IDL是一门简单易用的 xff08 包括但不限于 xff09 科学计算和可视化语言 xff0c 包含大量的函数 xff0c 尤其是同ENVI结合集成了该软件的大量功能 xff0c 因此在遥感图像批量处理上应用广泛 关于IDL xff08 结
  • IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)

    二 ENVI IDL批处理入门 ENVI IDL集成了ENVI软件的高级功能 xff0c 比如打开文件直接使用envi open file File r fid 61 fid即可 xff0c 不用考虑什么格式等 xff0c 再比如做文件投影
  • ENVI_IDL: 基础语法详解

    01 题目 02 代码说明 题目本身很简单 但是我自己加了一些东西进去增加难度 主要包括print函数的封装 格式化字符串 但是不影响代码的阅读 注 对于没有语言基础的人而言相对阅读困难 但是由于IDL是解释型语言 类似于Python 所以
  • ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析

    目录 1 课堂内容 2 知识储备 3 编程 1 课堂内容 读取OMI数据 HDF5 并输出为Geotiff文件 最重要的是数据的处理以及输出 这里我个人觉得难度不大 第一 获取OMI文件的NO2数据集的数据以及对数据中的异常值做处理 譬如全
  • Thrift快速入门

    文章目录 Thrift的安装 windows下安装 Linux下安装 Thrift的使用 编写IDL文件 命名空间 namespace 基本数据类型 类型定义 typedef 结构体类型 struct 枚举类型 enum 异常类型 exce
  • cmake:读取并编译动态生成的 cpp 文件列表

    我有一个自定义工具 可以处理给定的 IDL 文件列表并生成许多 cpp 和 h 文件作为输出 我想将这些文件添加到要在我的 CMakeLists 中编译的内容列表中 并对这些文件对 IDL 的依赖关系进行建模 为了简单起见 我将声明对任何
  • COM - #include 生成的标头与 #import 生成的 tlb

    我有许多生成 COM DLL 的项目 这些项目输出以下内容 projectname i h projectname i c projectname p c projectname i tlb 然后 当另一个项目使用这个 DLL 时 它的使用
  • 如何防止 coclass 实现在 ATL 类型库中公开

    我正在构建一个带有类工厂类型的 ATL 类型库 有点像这样 object uuid interface INumber IDispatch propget id 0 HRESULT Value out retval LONG pVal ob
  • JavaScript / HTML5 的机器可读 (WebIDL) 参考?

    我正在寻找 JavaScript 类 成员 方法 参数 的机器可读参考 特别是与 HTML5 标准 画布 存储等 相关的参考 到目前为止我找到的只是 W3C 网站上的规范 其中包括规范的一部分 例如 http dev w3 org html
  • 当未提供 COM+ dll 时,从 COM+ dll 获取 IDL(用于 TLB)

    我有一个 dll 其中包含一些带有特定 自定义接口进行查询的 directshow 过滤器 COM 大多数第 3 方 directshow 组件包含嵌入式 tlb 文件 可用于跨环境通信 C typelib 导入 我不想尝试手动创建 c 所
  • 如何在COM接口定义中指定用户定义类型参数?

    我的 COM 接口方法之一需要用户定义类型的参数 如下所示 uuid 58ADDA77 274B 4B2D B8A6 CAB5A3907AE7 object Interface interface IRadio IUnknown HRESU
  • 无需重新编译即可更改 CORBA 接口

    我想向现有服务器的 CORBA 接口添加一个方法 这需要重新编译所有客户端吗 我用的是TAO 不需要重新编译客户端 也不应该这样做 无论您使用什么 ORB 正如 Adam 所指出的 查找是通过操作名称完成的 直接文本比较 我已经使用我们基于
  • 缺少 Idlj 编译器 (Linux/JDK 11)

    找不到idlj编译工具 idl文件 已检查 usr bin and usr lib jvm java 11 jdk 它不是和JDK捆绑在一起的吗 如何添加idlj编译器 附 我更喜欢Python 不太使用Java 如果这是一个愚蠢的问题 我
  • 如何在命令行中从 .NET 程序集获取 IDL(或如何将 TLB 转换为 IDL)?

    我们有一个 NET 程序集 实际上是 Aspose Words 我们希望客户端能够从 COM 客户端轻松使用它 因此 我们随程序集提供了 TLB 以便客户端可以从 C 或 Delphi 等语言中使用它 而不必自己提取 TLB 我们还随程序集
  • C# - 编写 COM 服务器 - 映射到方法的属性

    我们正在尝试替换最初为 VB6 应用程序编写的 COM 服务器 我们无法访问源代码 由于某种原因 VB6 应用程序可以调用我们的构造函数 但随后它会得到 系统错误 H80004002 没有这样的 接口支持 我假设当它尝试使用 QueryIn
  • _ptr 或 _var - 哪一个用作类字段,为什么?

    我有一堂课 class Impl1 public POA I1 private Impl2 var ob public Impl2 ptr get return ob void set Impl2 ptr ob this gt ob ob
  • 什么是IDL?

    IDL 是什么意思 我用谷歌搜索了一下 发现它代表接口定义语言 用于组件的接口定义 但是 在实践中 IDL 的目的是什么 微软使用它吗 接口定义语言 IDL 用于在远程过程调用 RPC 中建立客户端和服务器之间的通信 它有很多变体 例如 S
  • 创建仅包含枚举的 COM 库时出现问题

    我正在做一个 COM 互操作项目 用 C 和 NET Interop 替代一些 VB 和 C ATL COM 项目 当我在 NET 中定义枚举并将它们设为 ComVisible 时 它 们会公开为 Typelib EnumType Enum
  • 当 MIDL 无法创建 tlb 时该怎么办?

    我正在尝试创建一个 C inproc 服务器sbtsv idl 它包含在 Windows 8 SDK 中 几乎我的每一个指示 https stackoverflow com questions 1307675 convert interfa
  • 如何将IDL导入到Delphi中?

    我如何导入接口定义语言 idl 文件存入Delphi 将类型和接口转换为 pascal 文件 我试过了 File Open 它只显示 idl 文本文件的文本 Project 添加到项目 它只是 就像 添加了一个 idl文本文件到项目 成分

随机推荐