ВУЗ:
Составители:
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 и диспинтерфейсов являет- ся обеспечение механизма позднего связывания даже при отсутствии или не- доступности библиотеки типа. Клиент в период выполнения может запросить у самого объекта информацию о типе, при этом в стандартизованном виде дос- тупна вся необходимая для использования объекта информация: имена и иден-