定义
An interface description language or interface definition language (IDL), is a generic term for a language that lets a program or object written in one language communicate with another program written in an unknown language. IDLs describe an interface in a language-independent way, enabling communication between software components that do not share one language, for example, between those written in C++ and those written in Java.
例子
- AIDL: Java-based, for Android; supports local and remote procedure calls, can be accessed from native applications by calling through Java Native Interface (JNI)
- Apache Thrift: from Apache, originally developed by Facebook
- Avro IDL: for the Apache Avro system
- Concise Data Definition Language (CDDL, RFC 8610):[1] A Notation for CBOR and JSON data structures
- CortoScript: Describe data and/or interfaces for systems that require Semantic interoperability
- Etch: Cisco’s Etch Cross-platform Service Description Language
- Extensible Data Notation (EDN): Clojure data format, similar to JSON
- FlatBuffers: Serialization format from Google supporting zero-copy deserialization
- Franca IDL: the open-source Franca interface definition language
- FIDL: Interface description language for the Fuchsia Operating System designed for writing app components in C, C++, Dart, Go and Rust.[2]
- IDL specification language: the original Interface Description Language
- IPL: Imandra Protocol Language
- JSON Web-Service Protocol (JSON-WSP)
- Lightweight Imaging Device Interface Language
- Microsoft Interface Definition Language (MIDL): the Microsoft extension of OMG IDL to add support for Component Object Model (COM) and Distributed Component Object Model (DCOM)
- OMG IDL: standardized by Object Management Group, used in CORBA (for DCE/RPC services) and DDS (for data modeling), also selected by the W3C for exposing the DOM of XML, HTML, and CSS documents
- OpenAPI Specification: a standard for REST interfaces, used by Swagger and other technologies.
- Open Service Interface Definitions
- Protocol Buffers: Google’s IDL
- RESTful Service Description Language (RSDL)
- Specification Language for Internet Communications Engine (Ice: Slice)
- Universal Network Objects: OpenOffice.org’s component model
- Web Application Description Language (WADL)
- Web IDL: can be used to describe interfaces that are intended to be implemented in web browsers
- Web Services Description Language (WSDL)
- XCB: X protocol description language for X Window System
- Cross Platform Interface Description Language (XPIDL): Mozilla’s way to specify XPCOM interfaces
个人理解
IDL说白就是一个中介

因为要发给其他的程序服务,可能出现语言不一样,这个时候对数据做解析就有点问题了。如果基于tcp/ip通信,底层都是c接口,收发的也就是字符串,这个可能会比较好解析,但是传输体积太大了,导致开销大。
像是protobuf这种,我用c++发送数据,java接收,这其中的转换是由protobuf做的,而且protobuf压缩了数据量,用来通信效率也挺高。
参考:
...