Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 17 стр.

UptoLike

Составители: 

17
C++Builder), поскольку все подробности механизма скрыты от программиста.
Тем не менее, он является наименее производительным: достаточно предста-
вить себе многократные вызовы GetIDsOfNames для удаленного сервера авто-
матизации, передаваемые по сети! Высокопроизводительная альтернатива
раннее связывание на этапе компиляции или компоновки распределенного при-
ложения. Данный механизм предполагает , что на момент создания клиента
полностью известна информация о типе используемых объектов автоматиза-
ции: список поддерживаемых интерфейсов и их методов, параметры каждого
метода, типы свойств объектов и параметров методов и многое другое. Откуда
программист клиента (или соответствующая среда программирования) может
получить всю эту информацию ? Один из источников нам уже известен это
документация, сопровождающая сервер автоматизации. Тем не менее, в таком
серьезном деле, как раннее связывание, нельзя слепо полагаться на добросове-
стность авторов документации. Во-первых, предоставляемой информации мо-
жет оказаться недостаточно, во- вторых, этой неформализованной информацией
не сможет воспользоваться среда программирования для автоматизации про-
цессов сборки распределенного приложения. Более надежный источник биб -
лиотека типов, сопровождающая практически любой сколько- нибудь серьезный
сервер автоматизации.
Библиотека типов (Type Library) независимое от языка программиро-
вания средство исчерпывающего документирования COM-объекта. Формат
библиотеки типов стандартизован в COM. Поставка библиотеки типов может
осуществляться разными способами. Например , ее содержимое может быть ин -
тегрировано в COM-сервер в качестве ресурса или распространяться независи-
мо в отдельных файлах с расширением .TLB или .OLB . Последнее расширение
традиционно для поставки библиотек типов приложений Microsoft Office.
Изучение библиотеки типов Delphi-программистом
Стандартный способ спецификации библиотек типов язык Microsoft
IDL (Interface Definition Language). По данной спецификации компилятор MIDL
может сгенерировать библиотеку в стандартном двоичном формате, и именно
этот последний формат обязателен для комплекта поставки сервера автомати-
зации. Исходный текст на IDL, как правило, не поставляется. Чтобы восполнить
этот пробел современные интегрированные среды программирования предос-
тавляют два механизма использования доступной информации о типе:
просмотр и редактирование библиотеки типов при помощи специальной
утилиты редактора библиотеки типов ;
импорт библиотеки типов в проект клиентского приложения.
Оба механизма обеспечены как в среде Delphi, так и в C++Builder. Встро-
енный редактор библиотеки типов позволяет осуществлять просмотр и ре-
дактирование библиотеки, доступной в двоичном формате. Более того, при же-
лании можно автоматически сгенерировать исходный текст описания библио -
теки типов на IDL (осуществить экспорт библиотеки типов). Процедура им -
порта библиотеки типов заключается, упрощенно говоря, в генерации необ-
ходимой совокупности модулей , присоединяемых к проекту и делающих дос-
                                     17
C++Builder), поскольку все подробности механизма скрыты от программиста.
Тем не менее, он является наименее производительным: достаточно предста-
вить себе многократные вызовы GetIDsOfNames для удаленного сервера авто-
матизации, передаваемые по сети! Высокопроизводительная альтернатива –
раннее связывание на этапе компиляции или компоновки распределенного при-
ложения. Данный механизм предполагает, что на момент создания клиента
полностью известна информация о типе используемых объектов автоматиза-
ции: список поддерживаемых интерфейсов и их методов, параметры каждого
метода, типы свойств объектов и параметров методов и многое другое. Откуда
программист клиента (или соответствующая среда программирования) может
получить всю эту информацию? Один из источников нам уже известен – это
документация, сопровождающая сервер автоматизации. Тем не менее, в таком
серьезном деле, как раннее связывание, нельзя слепо полагаться на добросове-
стность авторов документации. Во-первых, предоставляемой информации мо-
жет оказаться недостаточно, во-вторых, этой неформализованной информацией
не сможет воспользоваться среда программирования для автоматизации про-
цессов сборки распределенного приложения. Более надежный источник – биб-
лиотека типов, сопровождающая практически любой сколько-нибудь серьезный
сервер автоматизации.
      Библиотека типов (Type Library) – независимое от языка программиро-
вания средство исчерпывающего документирования COM-объекта. Формат
библиотеки типов стандартизован в COM. Поставка библиотеки типов может
осуществляться разными способами. Например, ее содержимое может быть ин-
тегрировано в COM-сервер в качестве ресурса или распространяться независи-
мо в отдельных файлах с расширением .TLB или .OLB . Последнее расширение
традиционно для поставки библиотек типов приложений Microsoft Office.

      Изучение библиотеки типов Delphi-программистом
      Стандартный способ спецификации библиотек типов – язык Microsoft
IDL (Interface Definition Language). По данной спецификации компилятор MIDL
может сгенерировать библиотеку в стандартном двоичном формате, и именно
этот последний формат – обязателен для комплекта поставки сервера автомати-
зации. Исходный текст на IDL, как правило, не поставляется. Чтобы восполнить
этот пробел современные интегрированные среды программирования предос-
тавляют два механизма использования доступной информации о типе:
• просмотр и редактирование библиотеки типов при помощи специальной
   утилиты – редактора библиотеки типов;
• импорт библиотеки типов в проект клиентского приложения.
      Оба механизма обеспечены как в среде Delphi, так и в C++Builder. Встро-
енный редактор библиотеки типов позволяет осуществлять просмотр и ре-
дактирование библиотеки, доступной в двоичном формате. Более того, при же-
лании можно автоматически сгенерировать исходный текст описания библио-
теки типов на IDL (осуществить экспорт библиотеки типов). Процедура им-
порта библиотеки типов заключается, упрощенно говоря, в генерации необ-
ходимой совокупности модулей, присоединяемых к проекту и делающих дос-