Технологии COM и DECOM (Microsoft)
Реферат, 01 Февраля 2013, автор: пользователь скрыл имя
Описание
Архитектура COM является расширяемой, и на ней базируются другие технологии Microsoft, такие как OLEи ActiveX. Эти технологии в настоящее время являются расширениями операционной системы, и определяют свои собственные правила работы и предлагают свои библиотеки для создания объектов и для управления объектами на основе данных технологий. Используя COM как основу, разработчики программного обеспечения получают возможность создавать свои собственные расширения таким образом, что программные объекты созданные, по правилам COM-технологии могут работать с другими COM-объектами через унифицированный механизм взаимодействия, который предлагает COM.
Содержание
1. COM-технологии …………………………………………………………………………3
1.1. Состав COM-объекта …………………………………………………………………...4
1.2. Интерфейсы ……………………………………………………………………………..4
1.3. Свойства COM-объектов ……………………………………………………………….7
1.4. COM-серверы …………………………………………………………………………...7
1.5. Механизм маршаллинга ………………………………………………………………..8
1.6. Фабрики классов ………………………………………………………………………..9
1.7. Библиотеки типов …………………………………………………………………......10
1.8. Диспетчерский интерфейс …………………………………………………………….11
1.9. Привязка идентификаторов …………………………………………………………...12
1.10. Пользовательские интерфейсы ……………………………………………………...12
1.11. Двойные интерфейсы ………………………………………………………………...13
2. DCOM-технологии ………………………………………………………………………15
2.1 Архитектура DCOM ……………………………………………………………………15
2.2 Компоненты и их повторное использование …………………………………………17
2.3 Независимость от местоположения …………………………………………………...17
2.4 Независимость от языка ………………………………………………………………..19
2.5 Управление соединением ……………………………………………………………...19
Список используемых источников………………………………………………………...20
Работа состоит из 1 файл
Реферат_информационные технологии.doc
— 240.00 Кб (Скачать документ)
- Фабрики классов
Фабрики или производители классов (class factories) - специальный тип COM-объектов, используемый для создания и регистрации COM-объектов. Производители классов реализуют стандартный механизм создания объектов COM-классов. Классы без идентификаторов класса (CLSID) и фабрики классов могут быть созданы посредством вызова конструктора. Использование фабрики классов для создания объектов означает, что для клиентского приложения, которому необходимо создать объект класса, не нужно знать об этом классе ничего, кроме его идентификатора CLSID. Фабрика классов возьмет вызов конструктора на себя, включая передачу аргументов в конструктор и остальные специфичные действия. Класс фабрики классов может быть объединен со многими COM-классами, для каждого из которых могут создаваться объекты. При создании же объекта фабрики классов, в конструктор передается идентификатор CLSID класса, для создания объектов которого предназначается фабрика. Этот идентификатор определяет, объекты какого класса могут быть созданы с помощью данной фабрики классов. Таким образом, каждый экземпляр фабрики классов в системе может быть использован для создания объектов только одного определенного класса.
Создание объекта класса производится посредством следующих действий:
- вызова глобальной API-функции CoGetClass, которая ищет в системном реестре зарегистрированный класс с данным CLSID, определяет путь к серверу, загружает сервер и выдает указатель на интерфейс производителя классов (обычно IClassFactory);
- Указатель на IСlassFactory может быть использован для вызова методов производителя классов, например: CoCreateInstance (создание объекта);
Альтернативой рассмотренному методу может служить вызов глобальной API-функции CoCreateInstance, которая выполняет перечисленный выше действия и создает объект класса с идентификатором CLSID, но таким образом можно создать только один объект данного класса, т.к. функция не возвращает указатель на интерфейс производителя классов.
- Библиотеки типов
Библиотека типов (type library) предоставляет информацию об используемых типах объектов и интерфейсах, которые предоставляются ActiveX-серевером. Библиотека типов по смыслу аналогична, например, заголовочному файлу (header) для разработок на языке C и любому другому модулю, содержащему информацию об используемых типах данных и объектах. Большинство информации подобного рода может быть записано в библиотеку типов. Получить информацию из библиотеки типов можно путем опроса запущенного объекта или же посредством загрузки непосредственно библиотеки типов. После создания библиотеки типов, к ней обеспечивается доступ через специальный тип интерфейсов: ITypeLib, ITypeInfo и ITypeComp. Интерфейс ITypeLib обеспечивает доступ к информации о типах в библиотеке типов, а также к описаниям конкретных объектов, которые, в свою очередь, могут быть получены через интерфейс ITypeInfo.
Библиотека типов содержит информацию о том, какой интерфейс, в каком COM-объекте содержится, количество и тип методов интерфейсов и их параметров. Эти описания включают в себя уникальные идентификаторы классов (CLSID) и их интерфейсов (IID), через которые осуществляется корректный доступ к объектам. В библиотеке типов также может содержаться следующая информация:
- Описания пользовательских типов данных, связанных с пользовательскими интерфейсами;
- Функции, которые экспортируются ActiveX-сервером, но которые не являются интерфейсными методами;
- Информация об энумерованных типах данных (символьных константах);
- Ссылки на описания типов в других библиотеках типов.
Использование библиотеки типов очень важно для объектов, которые предназначены для распространения и последующего использования многими пользователями. Также существует еще ряд причин использования библиотек типов:
- Объекты, которые используют непосредственную привязку к vtable, должны быть описаны в библиотеке типов, т.к. ссылки в vtable формируются во время компиляции;
- Объекты, созданные из классов, которые поддерживают интерфейс IProvideClassInfo, должны иметь библиотеку типов. Объекты, имеющие в своем составе данные интерфейс, являются типизированными COM-объектами, т.к. предоставляют информацию об используемых типах (из библиотеки типов);
- Элементы управления ActiveX должны иметь библиотеку типов, которая содержится непосредственно в DLL или OCX файле, содержащем код ActiveX-сервера;
- Приложения, которые являются Automation-серверами, должны иметь библиотеку типов, для более удобно связывания с клиентами;
- Использование библиотеки типов в любом случае облегчает работу с внешними приложениями, которые могут узнать об используемых типах данных, и т.о. исключается использование более громоздкого метода передачи параметров в системе через универсальный механизм;
- Диспетчерский интерфейс
Диспетчерский интерфейс (dispatch interface)
– стандартная специальная
Основным недостатком
- Привязка идентификаторов
COM предлагает возможность
Основным недостатком является отсутствие возможности проверки имени ресурса, если он вдруг изменился. В клиентском объекте все вызовы будут осуществляться через однажды связанные на этапе компиляции интерфейсные идентификаторы.
- Пользовательские интерфейсы
Vtable-интерфейсы (vtable interfaces) или пользовательские интерфейсы - определяются пользователем, и допускают вызывать методы интерфейса, пользуясь ссылками из vtable, при условии, если известен порядок записи ссылок на методы, число и тип передаваемых аргументов. Первые три записи в vtable соответствуют трем методам интерфейса IUnkown, за которыми следуют ссылки на остальные поддерживаемые интерфейсы. Если объект не реализует диспетчерский интерфейс, то следом за IUnkown непосредственно следуют ссылки на методы пользовательских интерфейсов, то есть, становится возможно обращение к методам и свойствам объектов непосредственно через ссылки из vtable.
В случае если сервер имеет библиотеку
типов и реализует
- Двойные интерфейсы
Несмотря на то, что COM предоставляет
возможность обращения к
Преимущества использования
- Двойные интерфейсы предлагают возможность получения указателей на ресурсы сервера по их именам при компиляции объекта, таким образом, позволяя создавать клиентов, с привязкой к vtable на этапе компиляции;
- Двойные интерфейсы позволяют клиентам осуществить прямой доступ к ресурсам сервера через vtable-интерфейсы, что увеличивает скорость взаимодействия объектов;
- Двойные интерфейсы имею преимущества проверки соответствия типов на этапе компиляции (преимущества раннего связывания);
- Клиенты, не работающие напрямую с vtable-интерфейсами имеют возможность взаимодействовать с объектами через диспетчерские интерфейсы;
- Двойные интерфейсы предоставляют возможность маршаллинга для обоих своих частей – для диспетчерского интерфейса и vtable-интерфейса. При обращении к серверу, находящемуся в другом адресном пространстве осуществляется автомаршаллинг при обращении через любую часть интерфейса.
Существует набор ограничений
по использованию двойных
- DCOM-технологии
Выпущенная в 1996 году технология DCOM (англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC). DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети. Главным конкурентом DCOM является другая известная распределённая технология — CORBA. Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC. Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и как может создавать экземпляры объекта и вызывать его методы.
2.1 Архитектура DCOM
Выпущенная в 1996 году технология DCOM (англ. Di
Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.
Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.
Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин (источник про фразу «из каких машин»?) может создавать экземпляры объекта и вызывать его методы.
DCOM является развитием
Рисунок 4 – COM-компоненты в одном процессе
В сегодняшних операционных системах процессы изолированы друг от друга. Клиент, которому нужно связаться с компонентом другого объекта, не может вызвать компонент напрямую, а должен использовать некоторую форму связи между процессами, предусмотренную операционной системой. СОМ организует подобное соединение в полностью прозрачной манере: он перехватывает вызовы со стороны клиента и адресует их компоненту другого процесса. Рис. 6 показывает, как run-time библиотеки COM/DCOM организуют соединение между клиентом и компонентом.