Что такое IDL?

Почему бы не создать такой вызов, как:

Service.GetCustomers();

, который не является асинхронным.

53
задан paxdiablo 23 March 2009 в 03:55
поделиться

4 ответа

Язык определения интерфейсов (IDL) используется для установки связи между клиентами и серверами в вызовах удаленной процедуры (RPC). Было много изменений этого, таких как RPC Sun, RPC ONC, RPC DCE и так далее.

В основном, Вы используете 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 создавать x функции тупикового и X-сервера для компиляции и соединения с Вашим кодом клиента и сервера для получения работы RPC.

Microsoft действительно использует IDL (я думаю, что у них есть компилятор MIDL) для материала COM. Я также использовал сторонние продукты с операционными системами MS, и DCE и RPC ONC.

77
ответ дан David 7 November 2019 в 18:41
поделиться

Это - язык, который использовался в эру COM для определения интерфейсов (предположительно), нейтральным в отношении языка способом.

1
ответ дан Dmitri Nesteruk 7 November 2019 в 18:41
поделиться

Это определяет интерфейс, который будет использоваться для связи с представленным сервисом в другом приложении.

при использовании SOAP, Вы будете знать о WSDL. WSDL является другой формой IDL. IDL обычно относится к Microsoft COM или IDL CORBA.

1
ответ дан Sarel Botha 7 November 2019 в 18:41
поделиться

Существует также Интерактивный Язык описания данных , который у меня было использование задания для анализа научных данных, но возможно от контекста это ясно Вам, это не то, что обозначает этот IDL.

10
ответ дан Kai 7 November 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: