Мегаобучалка Главная | О нас | Обратная связь


Привязка идентификаторов



2020-02-03 211 Обсуждений (0)
Привязка идентификаторов 0.00 из 5.00 0 оценок




 

COM предлагает возможность привязки диспетчерских интерфейсов на этапе компиляции. Если объект описан в библиотеке типов, то dispID может быть прочитан для каждого ресурса объекта, т.к. dispID является для каждого метода или свойства фиксирован, и является частью описания используемых типов данных объекта. Такая процедура называется привязкой идентификаторов (ID bindig). Метод GetIDsOfNames вызывается компилятором во время трансляции программы, таким образом, привязка идентификаторов является формой раннего связывания (early binding). В результате, на этапе выполнения, при первом вызове сервера клиентом, не требуется вызов процедуры привязки интерфейсов, что ускоряет работу. Еще одним достоинством данного подхода является проверка соответствия типов в обращениях к ресурсам сервера.

Основным недостатком является отсутствие возможности проверки имени ресурса, если он вдруг изменился. В клиентском объекте все вызовы будут осуществляться через однажды связанные на этапе компиляции интерфейсные идентификаторы.

 

Пользовательские интерфейсы

 

Vtable-интерфейсы (vtable interfaces) или пользовательские интерфейсы - определяются пользователем, и допускают вызывать методы интерфейса, пользуясь ссылками из vtable, при условии, если известен порядок записи ссылок на методы, число и тип передаваемых аргументов. Первые три записи в vtable соответствуют трем методам интерфейса IUnkown, за которыми следуют ссылки на остальные поддерживаемые интерфейсы. Если объект не реализует диспетчерский интерфейс, то следом за IUnkown непосредственно следуют ссылки на методы пользовательских интерфейсов, то есть, становится возможно обращение к методам и свойствам объектов непосредственно через ссылки из vtable.

В случае если сервер имеет библиотеку типов и реализует диспетчерский интерфейс, то клиент может получить информацию из библиотеки типов, без осуществления вызова функций через привязки. Достаточно получить идентификаторы dispID диспетчерского интерфейса, и осуществить привязку непосредственно к vtable. Таким образом, можно осуществить более быстрый доступ к ресурсам объекта, осуществляя прямой вызов через ссылки в vtable, не используя диспетчерский интерфейс. Код непосредственной привязки к vtable может быть автоматически сгенерирован на этапе компиляции. Разумеется, такой метод вызова функций гораздо быстрее, чем методы привязки идентификаторов (т.к. вызов осуществляется через Invoke, что вызывает процедуры упаковки/распаковки параметров) и позднего связывания (т.к. осуществляется полный цикл работы с диспетчерским интерфейсом).

 

Двойные интерфейсы

 

Несмотря на то, что COM предоставляет возможность обращения к ресурсам серверов используя vtable-интерфейсы, что повышает скорость взаимодействия клиента и сервера, некоторые клиенты могут быть разработаны таким образом, что обращаются к объектам только через интерфейс диспетчеризации. Это могут быть, например, интерпретируемые макроязыки, которые включают в себя средства для работы с COM-объектами, и в которых не реализованы возможности для привязки к vtable. Таким образом, COM предлагает то, что называется двойственным, или двойным интерфейсом (dual interface). Двойные интерфейсы предлагают два пути для доступа к ресурсам сервера: через диспетчерский интерфейс и через vtable-интерфейс. Двойной интерфейс определяется как наследник IDispatch.

Преимущества использования двойных интерфейсов:

· Двойные интерфейсы предлагают возможность получения указателей на ресурсы сервера по их именам при компиляции объекта, таким образом, позволяя создавать клиентов, с привязкой к vtable на этапе компиляции;

· Двойные интерфейсы позволяют клиентам осуществить прямой доступ к ресурсам сервера через vtable-интерфейсы, что увеличивает скорость взаимодействия объектов;

· Двойные интерфейсы имею преимущества проверки соответствия типов на этапе компиляции (преимущества раннего связывания);

· Клиенты, не работающие напрямую с vtable-интерфейсами имеют возможность взаимодействовать с объектами через диспетчерские интерфейсы;

· Двойные интерфейсы предоставляют возможность маршаллинга для обоих своих частей – для диспетчерского интерфейса и vtable-интерфейса. При обращении к серверу, находящемуся в другом адресном пространстве осуществляется автомаршаллинг при обращении через любую часть интерфейса.

 

Существует набор ограничений по использованию двойных интерфейсов. Они в основном связаны с типами данных, т.к. двойной интерфейс является наследником интерфейса IDispatch. Однако, существует путь для частичного избежания таких ограничений, определяя не двойной интерфейс, а два отдельных, один из которых – диспетчерский, другой - пользовательский (без ограничений на тип данных). Таким образом, можно осуществить доступ к ресурсам сервера как через диспетчерский, так и через vtabl-интерфейс.

 

 

Расширения COM

 

       Одним из расширением технологии COM является OLE, представляющая собой библиотеку собственных интерфейсов, типов данных и подпрограмм, предназначенных для обеспечения функциональности OLE. Каждая функция именуется с префиксом IOle.

       Еще одним расширением COM является не так давно созданная технология ActiveX. Основные ответвления ActiveX носят названия ActiveX Documents (документы ActiveX) и элементы управления ActiveX (ActiveX controls). ActiveX «моложе» OLE, и была разработана как COM-расширение, оптимизированное по скорости и по размеру. Однако, OLE с появлением ActiveX уже была неплохо развита, и сейчас различия между этими двумя технологиями начинают уменьшаться, а их функциональности все больше перекрываться.

 

OLE/Active document

 

Документы OLE (OLE/Active documents) – один из набора сервисов, которые предлагает технология OLE. Объекты OLE documents имеют все свойства OLE по связи и внедрению данных, визуального редактирования, поддержки drag-and-drop, активизации по месту (in-place-activation). Используя OLE document можно определить любой количество интерфейсов, через которые обеспечивается стандартное поведения объекта, такое как визуальное редактирования и drag-and-drop. Посредством реализации этих интерфейсов, объекты OLE documents могут быть свободно объединены в единую систему взаимодействующих объектов с разными форматами данных, таких, как звуковые фрагменты, текстовые документы и растровые изображения.

Объект OLE documents может быть реализован как внутренний и внешний COM-сервер. Такой объект состоит из двух частей: визуальной (presentation data), предназначенной для отображения визуальной части объекта и из внутренней части (native data), используемой для редактирования объекта. Объекты OLE documents могут быть контейнерами документов (document container) и серверами документов (document server). Сервер документов обеспечивает функциональность объектов OLE documents. В среде контейнера документов может быть активизирован любой сервер документов.

 

Automation

 

Технология автоматизации (automation) предлагает возможность программного управления одного приложения другим. В данной технологии различаются две составные компоненты:

· Клиентская часть, называемая контроллером автоматизации (automation controller);

· Серверная часть, которая носит название объекта автоматизации (automation object) – объект, которым управляет клиент.

 

Объекты автоматизации могут быть реализованы как внутренние, внешние и удаленные сервера. Технология автоматизации характеризуется двумя положениями:

 

· Объекты автоматизации должны иметь возможность определить множество свойств и команд через описания типов, т.е. они должны получить информацию об интерфейсах объекта, с которым идет взаимодействие, о методах интерфейсов и о типах аргументов. Такая информация предоставляется через библиотеки типов. Однако, использование библиотеки типов необязательно при использовании интерфейса диспетчеризации, т.к. с помощью последнего осуществляется привязка интерфейсов на этапе выполнения программы (недостатком такого подхода является отсутствие проверки соответствия типов на этапе компиляции);

· Объекты автоматизации должны предоставлять свои методы общедоступными для внешнего использования, так, чтобы ими могли пользоваться внешние приложения. Для этого, в объектах автоматизации должен быть реализован интерфейс диспетчеризации.

 

Основным достоинством технологии автоматизации является возможность создания объектов, работающих в любом процессном пространстве. Таким образом, вместо создания невизуального OLE-объекта предпочтительнее использовать Automation. Еще одно достоинство технологии Automation заключается в механизме взаимодействия приложений, реализуемый интерфейсом диспетчеризации, который автоматизирует процесс маршаллинга. Однако, этот механизм ограничивает набор типов данных, которые можно использовать при автомаршаллинге.

 

ActiveX control

 

Технология ActiveX расширяет COM и OLE новыми функциями, специфичными для элементов управления ActiveX (ActiveX control). ActiveX control – визуальные объекты управления, реализуемые как внутренние COM-сервера, и которые включаются в OLE-контейнеры, и работают в их среде. Элементы управления ActiveX не являются законченными приложениями, но представляют собой объект, который решает некоторую частную задачу и может быть встроен в различные приложения. Основными характерными особенностями ActiveX controls является возможность обработки событий, привязки к источникам данных и поддержка лицензирования.

Элементы управления ActiveX особенно широко используются в разработке Web-приложений, где ActiveX controls используются как интерактивные объекты на Web-страницах. По существу, ActiveX становится стандартом, специально направленным на интерактивную часть World Wide Web, например, для просмотра в Web-браузере не гипертекстовых документов, доступ к базам данных и т.д.

 



2020-02-03 211 Обсуждений (0)
Привязка идентификаторов 0.00 из 5.00 0 оценок









Обсуждение в статье: Привязка идентификаторов

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (211)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)