문제

IDL의 의미는 무엇입니까? Google을 검색 한 결과 인터페이스 정의 언어를 나타내는 것으로 나타 났으며, 이는 구성 요소의 인터페이스 정의에 사용됩니다. 그러나 실제로 IDL의 목적은 무엇입니까? Microsoft가 사용합니까?

도움이 되었습니까?

해결책

IDL (Interface Definition Language)은 원격 프로 시저 호출 (RPC)에서 클라이언트와 서버 간의 통신을 설정하는 데 사용됩니다. SUN RPC, ONC RPC, DCE RPC 등과 같은 많은 변형이있었습니다.

기본적으로 IDL을 사용하여 클라이언트와 서버 간의 인터페이스를 지정하여 RPC 메커니즘이 네트워크에서 기능을 호출하는 데 필요한 코드 스터브를 만들 수 있도록합니다.

RPC는 IDL 정보를 사용하여 클라이언트 및 서버에 대한 스텁 함수를 만들어야합니다. C의 기능 프로토 타입과 매우 유사하지만 최종 결과는 다음과 같이 약간 다릅니다.

+----------------+
| Client         |
|  +----------+  |  +---------------+
|  |   main   |  |  | Server        |
|  |----------|  |  |  +----------+ |
|  | stub_cli |------->| stub_svr | |
|  +----------+  |  |  |----------| |
+----------------+  |  | function | |
                    |  +----------+ |
                    +---------------+

이 예에서는 전화하는 대신 function 같은 프로그램에서 main 클라이언트 스텁 함수를 호출합니다 ( function) 정보를 포장하고 와이어를 가로 질러 다른 프로세스로 가져 오는 책임이 있습니다. 이것은 동일한 기계 나 다른 기계 일 수 있습니다. 실제로는 중요하지 않습니다. RPC의 장점 중 하나는 서버를 마음대로 이동할 수 있다는 것입니다.

서버에는 해당 정보를 수신하여 서버로 전달하는 '청취자'프로세스가 있습니다. 서버의 스탁은 정보를 수신하고 포장을 풀고 실제 기능으로 전달합니다.

실제 기능은 필요한 작업을 수행하고 서버 스터브로 돌아와서 반환 정보를 포장 할 수 있습니다 (반품 코드 및 [out] 또는 [in,out] 변수) 및 클라이언트 스터브로 다시 전달하십시오.

클라이언트 스터브는 포장을 풀고 다시 전달합니다. main.

실제 세부 사항은 약간 다를 수 있지만 설명은 개념적 개요에 충분해야합니다.

실제 IDL은 다음과 같습니다.

[uuid(f9f6be21-fd32-5577-8f2d-0800132bd567),
    version(0),
    endpoint("ncadg_ip_udp:[1234]", "dds:[19]")]
interface function_iface {
    [idempotent] void function(
        [in] int handle,
        [out] int *status
    );
}

상단에있는 모든 것들은 기본적으로 네트워킹 정보이며, 그 고기는 프로토 타입이 표시되는 인터페이스 섹션 내부에 있습니다. 이를 통해 IDL 컴파일러는 클라이언트 및 서버 코드를 컴파일하고 연결하여 RPC 작동을 얻기 위해 X 스터브 및 X 서버 기능을 구축 할 수 있습니다.

Microsoft는 COM에 IDL (MIDL 컴파일러가 있다고 생각합니다)을 사용합니다. 또한 DCE 및 ONC RPC (MS 운영 체제와 함께 타사 제품을 사용했습니다.

다른 팁

도 있습니다 대화식 데이터 언어 과학적 데이터 분석을 사용하는 직업을 가졌지 만 아마도 맥락에서 볼 때이 IDL이 의미하는 것이 아니라는 것이 분명합니다.

IDL은 약어입니다 인터페이스 정의 언어 그중 언어를 정의한 공급 업체 또는 표준 그룹에 따라 몇 가지 변형이 있습니다. IDL의 목표는 일부 서비스의 인터페이스를 설명하여 서비스를 사용하려는 고객이 서비스가 제공하는 방법과 속성, 인터페이스가 제공하는 방법을 알 수 있도록하는 것입니다. IDL은 일반적으로 이진 인터페이스와 함께 사용되며 IDL 언어 파일은 이진 인터페이스에 사용되는 데이터 유형을 설명합니다.

이진 구성 요소에 대한 여러 표준이 있습니다. 일반적으로 침대 또는 선반에서 상업용, 그리고 클라이언트가 이진 구성 요소와 의사 소통하는 방법은 전통적으로 일부 버전에서 다를 수 있습니다. 원격 절차 호출 또는 RPC 사용. 그러한 표준은 두 가지입니다 Microsoft Common Object Model 또는 COM 표준 그리고 공통 객체 요청 브로커 또는 CORBA 표준. 다음과 같은 구성 요소에 대한 다른 표준이 있습니다 Firefox 플러그인 또는 Visual Studio 자체와 같은 다른 응용 프로그램을위한 플러그인이지만, 이들은 반드시 API에 대한 표준화되고 잘 알려진 인터페이스가있는 일종의 소프트웨어 개발 키트 또는 SDK를 사용하여 어떤 형태의 인터페이스 설명 언어를 사용하지는 않습니다.

IDL이 허용하는 것은 이진 특성으로 인해 다양한 프로그래밍 언어와 다양한 환경과 함께 사용할 수있는 다양한 종류의 서비스를 제공하는 구성 요소를 만들 수있는 유연성의 정도입니다.

Microsoft는 COM 객체와 함께 IDL 방언을 사용하며 Microsoft IDL은 Corba IDL과 동일하지는 않지만 공통 언어 뿌리를 공유하기 때문에 유사점이 있습니다. IDL 파일에는 COM 객체가 지원하는 인터페이스에 대한 설명이 포함되어 있습니다. COM을 사용하면 IN 프로세스 서비스 (RPC 또는 직접 DLL 호출을 사용할 수 있음) 또는 프로세스 서비스 (RPC 사용)를 생성 할 수 있습니다. COM의 아이디어는 클라이언트가 인터페이스와 함께 컴포넌트에 대한 식별자를 알아야한다는 것입니다. 클라이언트는 COM 객체를 요청한 다음 COM 객체의 공장에서 클라이언트 객체를 요청하여 클라이언트가 사용하려는 인터페이스를 지원 한 다음 해당 인터페이스를 통해 COM 객체를 사용합니다.

Microsoft는 IDL 파일을 처리하여 유형 라이브러리를 생성하여 인터페이스에 대한 COM 객체의 사용자에게 정보를 제공하는 MIDL 컴파일러와 클라이언트와 서비스 간 인터페이스를 통해 데이터를 마샬링하는 데 필요한 스텁을 제공합니다.

데이터의 마샬링은 기본적으로 스텁이 클라이언트가 제공 한 데이터를 가져 와서 패키지를 포장하여 일부 작업을 수행하고 데이터를 다시 보낸다는 것을 의미합니다. 이 데이터를 전송 및 수신하는 것은 일부 RPC 서비스 또는 직접 DLL 기능 호출을 통해 이루어질 수 있습니다. 서비스의 응답은 클라이언트에 적합한 양식으로 변환 된 다음 클라이언트에게 제공됩니다. 따라서 기본적으로 마샬링 기능은 다음과 같습니다 어댑터 (어댑터 설계 패턴 참조) 또는 브리지 (브리지 디자인 패턴 참조) 클라이언트와 서비스 사이.

Visual Studio, 내 경험은 C ++에 대한 경험이 있으며,이를 통해 연주 할 수 있도록 예제를 생성하는 데 사용할 수있는 여러 마법사가 포함되어 있습니다. 관심이 있으시면 작업 공간을 만들고 작업 공간에서 ATL 프로젝트를 생성하여 컨트롤을 생성 한 다음 간단한 MFC 대화 상자 프로젝트를 생성하여 테스트 할 수 있습니다. COM 제어에 ATL을 사용하면 나중에 조사 할 수있는 몇 가지 세부 정보가 숨어 있으며 간단한 MFC 대화 상자 프로젝트는 컨테이너를 쉽게 만들 수있는 방법을 제공합니다. 또한 Visual Studio에서 사용 가능한 ActiveX Control Test 컨테이너 도구를 사용하여 예비 테스트를 수행하고 방법 및 속성의 작동 방식을 확인할 수 있습니다.

Codeproject.com과 같은 웹 사이트에는 여러 가지 예제 프로젝트가 있습니다. 예를 들어 여기 있습니다 C를 사용하여 COM 뒤에 모든 추악한 배관을 노출시키기 위해 하나 그리고 여기 있습니다 하나는 ATL없이 C ++를 사용합니다.

그것은 언어 중립적 방식으로 인터페이스를 정의하기 위해 회사 시대에 사용 된 언어입니다.

다른 응용 프로그램에서 노출 된 서비스와 통신하는 데 사용되는 인터페이스를 정의합니다.

비누를 사용하면 WSDL에 대해 알 수 있습니다. WSDL은 IDL의 또 다른 형태입니다. IDL은 일반적으로 Microsoft Com 또는 Corba IDL을 나타냅니다.

IDL은 2 건에서 필수적입니다. 1. EXE 서버 용 프록시/스터브 DLL을 생성합니다. 2. 자동화 서버 용 유형 라이브러리를 작성합니다.

IDL의 기본 사항에 대한 아주 좋은 기사가 있습니다. 링크

IDL을 연구하려면 VC ++ 패키지의 하위 디렉토리가 포함 된 컴파일러 자체의 IDL 헤더 파일을 읽는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top