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

UptoLike

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

3
Введение в OLE–автоматизацию
Настольные приложения текстовые процессоры, электронные таблицы
и т . д . предназначены для повышения производительности труда пользовате-
лей . Программируемость приложений позволяет использовать их сервисы не
только людям , но и другим программам . В результате, вместо того чтобы оста-
ваться инструментами лишь для конечных пользователей , настольные прило-
жения становятся наборами инструментов для программистов. Обеспечение
программируемости требует стандартизации способа предоставления одной
программой своих сервисов другой программе. Для реализации такого типа
взаимодействия Microsoft использует модель COM. Приложения обеспечивают
доступ к своим сервисам через интерфейсы своих COM-объектов, после чего
этими сервисами может воспользоваться любой фрагмент кода, способный вы -
зывать методы COM-объекта. Программисты , таким образом, получают воз-
можность создавать приложения поверх функциональности, предоставляемой
имеющимся программным обеспечением . В COM такой стандартный способ
обеспечения программируемости называется OLE-автоматизацией (OLE
Automation).
Итак , разработчик может сделать приложение программируемым, опре-
делив объекты (так называемые, объекты автоматизации, Automation objects)
и интерфейсы COM, методы которых будут прямо отображаться на внутренние
функции приложения. Обычно, хотя и не обязательно, для этих целей исполь-
зуется стандартный интерфейс IDispatch, разработанный группой Microsoft
Visual Basic. Необходимость в этом интерфейсе возникла на заре OLE-
автоматизации из- за того, что Visual Basic, являясь одним из наиболее распро-
страненных средств создания сценариев для программируемых приложений , не
поддерживал возможности вызова методов обычных COM-интерфейсов с вир -
туальной таблицей . По традиции, с которой приходится мириться программи-
стам на других языках , OLE-автоматизация большинства приложений и сегодня
реализуется с помощью IDispatch. Этот интерфейс в настоящее время под -
держивается Microsoft Word, Microsoft Excel и массой других приложений .
Интерфейс IDispatch спроектирован таким образом, что клиент с его
помощью может обращаться к произвольной группе методов, передавая любые
необходимые параметры . Чтобы это действовало, разработчик объекта, реали-
зующего IDispatch, должен определить, какие в точности методы будут дос-
тупны . Это достигается определением диспетчерского интерфейса (dispatch
interface), сокращенно диспинтерфейса (dispinterface). Каждый экземпляр
стандартного интерфейса IDispatch (объект может поддерживать несколько
экземпляров одновременно) обеспечивает доступ к определенному диспинтер -
фейсу .
Другой , не менее важной задачей IDispatch и диспинтерфейсов являет -
ся обеспечение механизма позднего связывания даже при отсутствии или не-
доступности библиотеки типа. Клиент в период выполнения может запросить у
самого объекта информацию о типе, при этом в стандартизованном виде дос-
тупна вся необходимая для использования объекта информация: имена и иден-
                                     3

     Введение в OLE–автоматизацию
       Настольные приложения – текстовые процессоры, электронные таблицы
и т.д. – предназначены для повышения производительности труда пользовате-
лей. Программируемость приложений позволяет использовать их сервисы не
только людям, но и другим программам. В результате, вместо того чтобы оста-
ваться инструментами лишь для конечных пользователей, настольные прило-
жения становятся наборами инструментов для программистов. Обеспечение
программируемости требует стандартизации способа предоставления одной
программой своих сервисов другой программе. Для реализации такого типа
взаимодействия Microsoft использует модель COM. Приложения обеспечивают
доступ к своим сервисам через интерфейсы своих COM-объектов, после чего
этими сервисами может воспользоваться любой фрагмент кода, способный вы-
зывать методы COM-объекта. Программисты, таким образом, получают воз-
можность создавать приложения поверх функциональности, предоставляемой
имеющимся программным обеспечением. В COM такой стандартный способ
обеспечения программируемости называется OLE-автоматизацией (OLE
Automation).
       Итак, разработчик может сделать приложение программируемым, опре-
делив объекты (так называемые, объекты автоматизации, Automation objects)
и интерфейсы COM, методы которых будут прямо отображаться на внутренние
функции приложения. Обычно, хотя и не обязательно, для этих целей исполь-
зуется стандартный интерфейс IDispatch , разработанный группой Microsoft
Visual Basic. Необходимость в этом интерфейсе возникла на заре OLE-
автоматизации из-за того, что Visual Basic, являясь одним из наиболее распро-
страненных средств создания сценариев для программируемых приложений, не
поддерживал возможности вызова методов обычных COM-интерфейсов с вир-
туальной таблицей. По традиции, с которой приходится мириться программи-
стам на других языках, OLE-автоматизация большинства приложений и сегодня
реализуется с помощью IDispatch . Этот интерфейс в настоящее время под-
держивается Microsoft Word, Microsoft Excel и массой других приложений.
       Интерфейс IDispatch спроектирован таким образом, что клиент с его
помощью может обращаться к произвольной группе методов, передавая любые
необходимые параметры. Чтобы это действовало, разработчик объекта, реали-
зующего IDispatch , должен определить, какие в точности методы будут дос-
тупны. Это достигается определением диспетчерского интерфейса (dispatch
interface), сокращенно – диспинтерфейса (dispinterface). Каждый экземпляр
стандартного интерфейса IDispatch (объект может поддерживать несколько
экземпляров одновременно) обеспечивает доступ к определенному диспинтер-
фейсу.
       Другой, не менее важной задачей IDispatch и диспинтерфейсов являет-
ся обеспечение механизма позднего связывания даже при отсутствии или не-
доступности библиотеки типа. Клиент в период выполнения может запросить у
самого объекта информацию о типе, при этом в стандартизованном виде дос-
тупна вся необходимая для использования объекта информация: имена и иден-