接口定义语言(IDL)是一种标准的语言,为分布式或者基于组件的应用程序定义函数和方法的接口。它在像COBRA和COM这样的技术中使用得很多。在大多数情况下,使用IDL对于你来说是透明的;它通常被集成到你工作要用到的工具和开发平台里了。
但是,拥有IDL应用知识将会是很便利的,因为你可能自己要用到它或者需要阅读它以便了解如何使用其他人的组件。(例如,W3C的DOM规范文档大量使用了IDL。)就是不看别的,IDL从历史的角度来看也是重要的,因为SOAP和WSDL这些让Web服务成为可能的科技都是以它为铺路石的。
IDL开始于开放集团分布式计算环境(DCE)的一部分。DCE开创了一个进行远程进程调用(RPC)或者是跨网络调用函数的标准方法。这需要一个叫做封送处理的过程,它把那个到远程计算机的函数调用所需的数据集中起来。
在那个时候,大多数需要重复使用代码的程序员只是简单地把C语言报头文件编译成应用程序,静态地把应用程序和需要重复使用的代码联系起来。当DCE开发人员开始寻找自动为RPC提供所需封送处理代码的方法时,他们很自然把这些报头文件——这是大多数人曾经在创建的——改编成对这个任务有用的格式。(所以,如果你精通任何类似C语言家族的语言,包括Java、C++和C#等,那么IDL非常类似于C语言的句法对你来说会是很熟悉的。)
后来,当开始使用动态组件重复使用标准,例如COBRA和COM以后,这些程序员从先前使用PRC完成的工作里寻求一个标准。所以,IDL最终推广开来,成为以一种中性语言方式定义对象接口的方法。
今天,有几种IDL在使用:OMG/COBRA、微软和KDE-DCOP是一些不同的实现方法。支持每种实现方法的销售商都提供了编译器,能把IDL源代码编译成类型库来描述正在被讨论的组件,所以使用这个组件,类型检查能在应用程序的编译期间进行。