Разработка приложений в рамках COM
Категория реферата: Рефераты по информатике, программированию
Теги реферата: конспект 5 класс, диплом купить
Добавил(а) на сайт: Сыромятников.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата
Объект COM-класса должен иметь в своем составе фабрику классов, и идентификатор класса CLSID (Class Identifier), так чтобы COM-объект мог быть создан на основе существующего модуля.
COM-сервер – это приложение, или библиотека, предоставляющее определенный набор сервисных функций для клиентских приложений или библиотек.
COM-сервер состоит из COM-объектов. Например, COM-сервер, который включает в себя код элементов управления ActiveX (ActiveX control)– является ActiveX-сервером. Для разработчика имеется большое число библиотек, которые можно использовать для создания COM-объектов.
В качестве примера можно привести библиотеку Microsoft Active Template
Library, предоставляющую набор шаблонов, на основе которых можно создавать свои собственные программные продукты, построенные по COM- технологии. Например, шаблон для COM-сервера включает в себя код для основных функций, которые должен обеспечивать COM-сервер: регистрация сервера в системе, загрузка/выгрузка сервера, создание объектов, управления фабриками классов, обеспечение выдачи информации о сервере, включая: тип сервера, help-файл, имя сервера, библиотека типов и т.д.
Клиенты не должны знать, каким образом сервер выполняет свои функции, и клиенты не должны знать, где сервер находится – все взаимодействие осуществляется через указатели на интерфейс сервера.
COM-сервер может быть следующих типов:
. In-process server (внутренний сервер) – программный DLL модуль, работающий в рабочем пространстве памяти клиентского приложения:
. Local server (локальный сервер) – программный EXE модуль, работающий в отдельном адресном пространстве;
. Remote server (удаленный сервер) – программный EXE модуль, работающий на удаленной машине:
5 Механизм маршаллинга
Разница между внутренним и удаленным серверами в том, какой тип межпроцессной связи используется. В данном случае существует необходимость использования посредников, которые обеспечивают передачу параметров и вызов функций. Такой механизм называется маршаллингом (marshalling). Т.к. в случае, когда клиент и сервер находятся в разных адресных пространствах, доступ к ресурсам не может быть осуществлен непосредственно через указатели. Поэтому посредники со стороны клиента (proxy) осуществляют упаковку аргументов в пакеты маршаллинга (marshalling packets), и обеспечивают удаленный вызов процедур (Remote Procedure Call). Посредник со стороны сервера (stub) реализуют распаковку параметров, и помещение их в стек. Далее осуществляется вызов непосредственно реализации метода. По сути, сервер создает клиентский вызов процедуры в своем собственном адресном пространстве.
Посредники используют COM-средства, для осуществления взаимодействия в разных процессах. Для взаимодействия объектов, находящихся на разных машинах, используются средства расширения COM – распределенная COM (Distributed COM или DCOM). COM предлагает стандартный механизм маршаллинга – интерфейс диспетчеризации (Dispatch
Interface).
6 Фабрики классов
Фабрики или производители классов (class factories) - специальный тип COM-объектов, используемый для создания и регистрации
COM-объектов. Производители классов реализуют стандартный механизм создания объектов COM-классов. Классы без идентификаторов класса
(CLSID) и фабрики классов могут быть созданы посредством вызова конструктора. Использование фабрики классов для создания объектов означает, что для клиентского приложения, которому необходимо создать объект класса, не нужно знать об этом классе ничего, кроме его идентификатора CLSID. Фабрика классов возьмет вызов конструктора на себя, включая передачу аргументов в конструктор и остальные специфичные действия. Класс фабрики классов может быть объединен со многими COM-классами, для каждого из которых могут создаваться объекты. При создании же объекта фабрики классов, в конструктор передается идентификатор CLSID класса, для создания объектов которого предназначается фабрика. Этот идентификатор определяет, объекты какого класса могут быть созданы с помощью данной фабрики классов. Таким образом, каждый экземпляр фабрики классов в системе может быть использован для создания объектов только одного определенного класса.
Создание объекта класса производится посредством следующих действий:
. вызова глобальной API-функции CoGetClass, которая ищет в системном реестре зарегистрированный класс с данным
CLSID, определяет путь к серверу, загружает сервер и выдает указатель на интерфейс производителя классов
(обычно IClassFactory);
. Указатель на IСlassFactory может быть использован для вызова методов производителя классов, например:
CoCreateInstance (создание объекта);
Альтернативой рассмотренному методу может служить вызов глобальной API-функции CoCreateInstance, которая выполняет перечисленный выше действия и создает объект класса с идентификатором
Рекомендуем скачать другие рефераты по теме: строительные рефераты, курсовая работа исследование.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата