맨위로가기

인터페이스 정의 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

인터페이스 정의 언어(IDL)는 서로 다른 프로그래밍 언어로 작성된 소프트웨어 컴포넌트 간의 통신을 가능하게 하는, 언어 중립적인 인터페이스 기술에 특화된 언어이다. IDL은 함수 구조와 객체 타입을 정의하며, C++과 Java 간의 통신, 원격 프로시저 호출 등에 활용된다. 주요 IDL로는 AIDL, Microsoft IDL, WSDL, Protocol Buffers 등이 있으며, 다양한 IDL 기반 시스템과 한국에서의 활용 사례가 존재한다.

더 읽어볼만한 페이지

  • 원격 프로시저 호출 - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
  • 원격 프로시저 호출 - DCE/RPC
    DCE/RPC는 분산 컴퓨팅 환경에서 원격 프로시저 호출을 가능하게 하는 프로토콜로, 오픈 소프트웨어 재단에서 개발되었으며, 다양한 운영체제와 환경에서 사용된다.
  • 데이터 모델링 언어 - 임베디드 SQL
    임베디드 SQL은 호스트 프로그래밍 언어 내에 SQL 문을 삽입하여 데이터베이스와 상호 작용하는 기술로, 데이터베이스 액세스를 표준화하지만 보안 취약점과 이식성 저하의 단점도 가진다.
  • 데이터 모델링 언어 - 데이터 정의 언어
    데이터 정의 언어(DDL)는 SQL에서 테이블, 열, 데이터 형식 등을 정의하고 데이터베이스 스키마를 수정하는 데 사용되는 명령어 집합이며, `CREATE`, `DROP`, `ALTER`, `TRUNCATE` 등의 명령어를 포함하고 데이터 구조를 정의하는 다양한 형식 언어들을 포괄하는 의미로도 사용된다.
인터페이스 정의 언어
기본 정보
이름인터페이스 기술 언어
다른 이름인터페이스 정의 언어
종류컴퓨터 언어
용도소프트웨어 구성 요소의 인터페이스 설명
설명
개요인터페이스 기술 언어 (Interface Description Language, IDL) 또는 인터페이스 정의 언어 (Interface Definition Language)는 소프트웨어 구성 요소의 인터페이스를 설명하는 데 사용되는 컴퓨터 언어이다.
IDL은 다른 언어로 작성된 프로그램 간의 통신을 가능하게 한다.
IDL로 구성 요소의 인터페이스를 정의함으로써, 다른 언어로 작성된 구성 요소들이 서로 상호 작용할 수 있다.
역사
최초의 IDLSystem/360의 인터페이스 기술
사용 예시
일반적인 사용IDL은 CORBA와 같은 원격 프로시저 호출 시스템에서 소프트웨어 구성 요소 간의 인터페이스를 정의하는 데 자주 사용된다.
또한 객체 지향 프로그래밍 언어에서 클래스 또는 인터페이스의 인터페이스를 정의하는 데 사용될 수 있다.
예시아래는 간단한 IDL 예시이다.
interface MyInterface {
string myMethod(in long param1, out string param2);
};
장점
상호 운용성서로 다른 언어로 작성된 구성 요소 간의 상호 운용성을 가능하게 한다.
재사용성구성 요소의 재사용성을 향상시킨다. 인터페이스가 명확하게 정의되어 있기 때문에, 다른 구성 요소에서 쉽게 재사용할 수 있다.
유지 보수성유지 보수성을 향상시킨다. 인터페이스가 명확하게 정의되어 있기 때문에, 구성 요소를 변경하더라도 다른 구성 요소에 미치는 영향을 최소화할 수 있다.
단점
복잡성IDL을 사용하면 시스템의 복잡성이 증가할 수 있다. IDL을 배우고 사용해야 하며, IDL 컴파일러와 같은 추가 도구가 필요할 수 있다.
성능IDL을 사용하면 성능이 저하될 수 있다. IDL 컴파일러는 추가 코드를 생성해야 하며, 이 코드는 실행 시간을 증가시킬 수 있다.
같이 보기
관련 기술웹 서비스 기술
WSDL
gRPC
프로토콜 버퍼
외부 링크
참고 자료OMG IDL 정보
Microsoft MIDL 정보

2. 인터페이스 정의 언어의 개념

인터페이스는 임의의 언어로 기술할 수 있다. 하지만 범용 언어를 사용한 경우, 해당 언어 사양에 따라 인터페이스의 자유도가 낮아질 수 있다. 예를 들어 C 언어의 함수 정의를 사용하여 인터페이스를 정의한 경우, 시그니처의 타입이 C 언어의 데이터 타입으로 제약된다. 이를 피하기 위해서는 기존 언어로부터 중립적인 인터페이스 기술에 특화된 언어를 사용하면 된다. 이것이 '''인터페이스 정의 언어'''이다.

언어 중립적인 언어로 작성된 인터페이스 정의는, 서로 다른 프로그래밍 언어로 작성된 소프트웨어 컴포넌트 간의 통신을 가능하게 한다. 예를 들어, C++과 Java로 작성된 컴포넌트 간 등에 활용할 수 있다. 또한 원격 프로시저 호출에서도 마찬가지이며, 링크 양쪽 끝에 있는 서로 다른 OS 시스템 간의 통신을 가능하게 한다.

인터페이스는 함수 구조와 객체 타입을 종종 정한다. 따라서 IDL은 객체 기술에 중점을 둔 스키마 기술 언어 (SDL)와 겹치는 부분이 많다. 예를 들어 프로토콜 버퍼는 `rpc` 키워드를 사용하여 RPC 함수의 인터페이스를 정의하므로 IDL이라고 할 수 있는 한편[3], `message` 키워드를 사용하여 객체 타입을 정의하므로 SDL이라고도 할 수 있다.

3. 주요 인터페이스 정의 언어

인터페이스 정의 언어(IDL)는 다양한 프로그래밍 언어와 운영 체제 환경에서 소프트웨어 컴포넌트 간의 상호 작용을 정의하는 데 사용된다. 주요 IDL은 범용 IDL과 특정 목적의 IDL로 나눌 수 있다.

하위 섹션에서 범용 IDL과 특정 목적의 IDL을 표 형태로 제공하고 있으므로, 여기에서는 주요 IDL에 대한 간단한 언급만 포함한다.


  • 범용 IDL: 여러 분야에서 활용될 수 있는 IDL이다.
  • 특정 목적의 IDL: 특정 목적을 위해 만들어진 IDL이다.

3. 1. 범용 IDL

이름설명
IDL 명세 언어최초의 인터페이스 정의 언어이다.
AIDL 안드로이드 인터페이스 정의 언어구글의 안드로이드를 위한 IDL이다.
마이크로소프트 인터페이스 정의 언어
오픈 서비스 인터페이스 정의
플랫폼 독립 컴포넌트 모델링 언어
WSDL웹 서비스 기술 언어.
유니버설 네트워크 오브젝트OpenOffice.org의 컴포넌트 모델
SWIG단순 래퍼(wrapper)이자 인터페이스 생성기
XPIDL모질라의 크로스플랫폼 IDL
Etch시스코의 Etch 크로스 플랫폼 서비스 기술 언어
프로토콜 버퍼구글의 IDL
슬라이스ICE의 규격 언어
아파치 스리프트아파치 소프트웨어 재단에서 개발되었으며, 원래 페이스북에서 개발되었다.
아브로 IDL아파치 아브로 시스템용
ASN.1
캡'n 프로토전 관리자가 제작했으며, 프로토콜 버퍼의 단점으로 여겨지는 일부 문제를 피한다.
간결한 데이터 정의 언어 (CDDL)CBOR 및 JSON 데이터 구조를 위한 표기법[1]
CortoScript시맨틱 상호 운용성이 필요한 시스템에 대한 데이터 및/또는 인터페이스를 설명한다.
에치시스코의 에치 크로스 플랫폼 서비스 설명 언어
확장 가능한 데이터 표기법 (EDN)클로저 데이터 형식, JSON과 유사함
플랫버퍼제로 카피 역직렬화를 지원하는 구글의 직렬화 형식
프랑카 IDL오픈 소스 프랑카 인터페이스 정의 언어
FIDLC, C++, 다트, 고 및 러스트로 앱 컴포넌트를 작성하도록 설계된 Fuchsia 운영 체제용 인터페이스 설명 언어.[2]
JSON 웹 서비스 프로토콜 (JSON-WSP)
경량 이미징 장치 인터페이스 언어
마이크로소프트 인터페이스 정의 언어 (MIDL)컴포넌트 객체 모델 (COM) 및 분산 컴포넌트 객체 모델 (DCOM) 지원을 추가하기 위한 OMG IDL의 마이크로소프트 확장
OMG IDL객체 관리 그룹에서 표준화되었으며, CORBA (DCE/RPC 서비스용) 및 DDS (데이터 모델링용)에서 사용되며, XML, HTML 및 CSS 문서의 DOM을 노출하기 위해 W3C에서 선택되었다.
오픈API 명세웹 API에 대한 표준이며, 스웨거 및 기타 기술에서 사용된다.
RESTful 서비스 설명 언어 (RSDL)
SmithyAWS에서 개발한 프로토콜에 독립적인 인터페이스 정의 언어이다.
유니버설 네트워크 객체오픈오피스.org의 컴포넌트 모델
웹 애플리케이션 설명 언어 (WADL)
WHATWG의 웹 IDL웹 브라우저에서 구현될 인터페이스를 설명하는 데 사용할 수 있다.
웹 서비스 설명 언어 (WSDL)
XCBX 윈도 시스템용 X 프로토콜 설명 언어
크로스 플랫폼 인터페이스 설명 언어 (XPIDL)XPCOM 인터페이스를 지정하는 모질라의 방식


3. 2. 특정 목적의 IDL

다음은 특정 목적의 인터페이스 정의 언어(IDL) 목록이다.

  • IDL specification language - 최초의 인터페이스 정의 언어이다.
  • AIDL 안드로이드 인터페이스 정의 언어 - 구글의 안드로이드를 위한 IDL이다. 자바 기반으로, 로컬 및 원격 프로시저 호출을 지원하며, 자바 네이티브 인터페이스 (JNI)를 통해 호출하여 네이티브 애플리케이션에서 액세스할 수 있다.[2]
  • 마이크로소프트 인터페이스 정의 언어 - 컴포넌트 객체 모델 (COM) 및 분산 컴포넌트 객체 모델 (DCOM) 지원을 추가하기 위한 OMG IDL의 마이크로소프트 확장이다.
  • 오픈 서비스 인터페이스 정의
  • 플랫폼 독립 컴포넌트 모델링 언어
  • WSDL - 웹 서비스 기술 언어.
  • 유니버설 네트워크 오브젝트 - OpenOffice.org의 컴포넌트 모델
  • SWIG - 단순 래퍼(wrapper)이자 인터페이스 생성기
  • XPIDL - 모질라의 크로스플랫폼 IDL
  • Etch - 시스코의 Etch 크로스 플랫폼 서비스 기술 언어
  • 프로토콜 버퍼 - 구글의 IDL
  • 슬라이스 - ICE의 규격 언어
  • 아파치 스리프트 - 아파치 소프트웨어 재단에서 개발되었으며, 원래 페이스북에서 개발되었다.
  • 아브로 IDL - 아파치 아브로 시스템용
  • ASN.1
  • 캡'n 프로토 - 프로토콜 버퍼의 단점으로 여겨지는 일부 문제를 피한다.
  • 간결한 데이터 정의 언어 (CDDL, RFC 8610):[1] CBOR 및 JSON 데이터 구조를 위한 표기법
  • CortoScript - 시맨틱 상호 운용성이 필요한 시스템에 대한 데이터 및/또는 인터페이스를 설명한다.
  • 에치 - 시스코의 에치 크로스 플랫폼 서비스 설명 언어
  • 확장 가능한 데이터 표기법 (EDN) - 클로저 데이터 형식, JSON과 유사함
  • 플랫버퍼 - 제로 카피 역직렬화를 지원하는 구글의 직렬화 형식
  • 프랑카 IDL - 오픈 소스 프랑카 인터페이스 정의 언어
  • [https://fuchsia.dev/fuchsia-src/get-started/learn/fidl/fidl FIDL] - C, C++, 다트, 고 및 러스트로 앱 컴포넌트를 작성하도록 설계된 Fuchsia 운영 체제용 인터페이스 설명 언어.[2]
  • IDL 명세 언어 - 원래의 인터페이스 설명 언어
  • [https://docs.imandra.ai/ipl IPL] - 임란드 프로토콜 언어
  • JSON 웹 서비스 프로토콜 (JSON-WSP)
  • 경량 이미징 장치 인터페이스 언어
  • OMG IDL - 객체 관리 그룹에서 표준화되었으며, CORBA (DCE/RPC 서비스용) 및 DDS (데이터 모델링용)에서 사용되며, XML, HTML 및 CSS 문서의 DOM을 노출하기 위해 W3C에서 선택되었다.
  • 오픈API 명세 - 웹 API에 대한 표준이며, 스웨거 및 기타 기술에서 사용된다.
  • RESTful 서비스 설명 언어 (RSDL)
  • [https://smithy.io Smithy] - AWS에서 개발한 프로토콜에 독립적인 인터페이스 정의 언어이다.
  • 인터넷 통신 엔진 (Ice: Slice)을 위한 명세 언어
  • 웹 애플리케이션 설명 언어 (WADL)
  • WHATWG의 웹 IDL - 웹 브라우저에서 구현될 인터페이스를 설명하는 데 사용할 수 있다.
  • 웹 서비스 설명 언어 (WSDL)
  • XCB - X 윈도 시스템용 X 프로토콜 설명 언어
  • XPIDL - XPCOM 인터페이스를 지정하는 모질라의 방식
  • IDL 명세 언어 - 퀸즈 대학교에서 개발된 독자적인 인터페이스 기술 언어
  • Microsoft Interface Definition Language(MIDL) - 마이크로소프트에 의한 (DCE에 기반)
  • Open Service Interface Definitions(OSIDs) - Open Knowledge Initiative에 의한 (서비스 지향 아키텍처용)
  • GraphQL - WebAPI를 기술[4]

4. IDL 기반 시스템

참조

[1] 간행물 Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures https://www.rfc-edit[...] 2022-05-24
[2] 웹사이트 FIDL Overview https://fuchsia.dev/[...] 2022-02-23
[3] Protocol Buffers you can define an RPC service interface https://developers.g[...] 2023-01-01
[4] 웹사이트 FAQ https://graphql.org/[...] The GraphQL Foundation 2022-01-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com