Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интересности по COM.doc
Скачиваний:
36
Добавлен:
28.06.2014
Размер:
7.48 Mб
Скачать

3. Сложные документы

  • Сложные документы

•OLE технология позволяет создание сложных документов

•Приложения действуют как контейнеры и серверы

Рис. 1.8. Со структурной памятью, единственный файл содержит несколько памятей и потоков

Рис. 1.9. Документ может содержать элементы, управляемые различными приложениями

- AcitveX Controls

• ActiveX Controls определяет стандартный интерфейс для повторного использования компонент

• ActiveX controls первоначально назывался OLE controls

• ActiveX controls основывается на многие другие технологии, основанные на COM

4. РаспределенныйCom

  • Распределенный COM

•Распределенный COM позволяет клиентам осуществить доступ к объектам COM на других машинах

• DCOM использует RPC и обеспечивает сервисы безопасности

•Интерфейс, основанный на COM-сервисах

• DBMS сервисы могут быть доступны с использование COM объектов

• Технологии баз данных, основанные на COM обеспечивают способы доступа к данным, хранимых различными способами

• Транзакционные операции или все успешны или все неуспешны

• Модели транзакционных технологий, основанных на СОМ как объекты COM

•Сервис директорий отображает имя на информацию о названном объекте

Новые понятия и термины:

Component Object Model - Модель компонентных объектов

Object Linking and Embedding (OLE) - Связь и Внедрение объектов

Контрольные вопросы:

1. Технология ActiveX и OLE

2. Что такое COM и как он работает

3. Как работает распределенный COM. Схема распределенного COM

4. Сложные документы OLE

Литература:

1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996

Тема 2. Модель компонентных объектов (com)

План :

1. Описание СОМ объектов

2. Интерфейсы в COM

3. Создание COM объектов

1. Описание сом объектов

• Понимание ActiveX и OLE требует понимания COM

• Описание COM объектов

• Сервисы COMобъекта доступны через методы, входящие в его интерфейсы

  • Интерфейсы

• Интерфейс является контрактом между объектом и его клиентами

• Каждый интерфейс имеет два имени, одно используется людьми, а другое используется программным обеспечением

• Читаемый для людей интерфейс начинается с буквы I

• Имя интерфейса не гарантирует, что оно уникально

• Имена интерфейсов, используемых программным обеспечением являются глобально-уникальными

• Каждый GUID (Globally Unique Identifier) является уникальным во времени и пространстве

• IID (interface identifier) является GUID

• COM не передает мандат определенному языку нотацию для описания интерфейса

• Язык описания интерфейса COM часто используется для определения интерфейса

Рис. 2.1. A COM объект, его интерфейс и его клиент

[ object, uuid(E7CDODOO-1827-llCF-9946-444553540000)]

interface ISpellChecker :IUnknown {

import "unknown.idl" ;

HRESULT LookUpWord([in] OLECHAR word[31], [out] boolean *found);

HRESULT AddToDictionary([in] OLECHAR word[31]);

HRESULT RemoveFromDictaionary([in] OLECHAR word[31]);

}

2. Интерфейсы вCom

• Определение интерфейса включает его IID

• Каждый интерфейс наследует из IUnknown интерфейса

• Определение метода специфицирует имя метода, возвращаемое значение и (необязательно) список параметров

• Интерфейсы неизменны – однажды объявленные public (общие), они не могут быть изменены

• Добавление новой функциональности требует определение нового интерфейса

• COM определяет стандартный бинарный интерфейс для каждого своего метода

• vtable интерфейса содержит указатель на каждый из его методов

• Все vtables начинаются с указателя на методы IUknown

• Объект должен принадлежать этому бинарному формату для каждого интерфейса

Формат бинарного интерфейса COM похож на то, что компилятор C++ производит для класса C+

• Программисту, пишущему клиентские части может понадобиться знать этот бинарный формат

• Инструменты, такие как Visual Basic могут скрыть детали от программиста, пишущего клиентскую часть - IUnknown, Фундаментальный интерфейс

• Каждый COM объект должен поддерживать IUnknown

• Метод Querylnterface позволяет клиенту спросить указатель на другой интерфейс

• Querylnterface помогает решить проблемы версий

• Новые версии программного обеспечения с дополнительными характеристиками могут преподнести проблемы

• Раскрытие новых характеристик требует добавление нового интерфейса

• Querylnterface позволяет Вам начать использовать новые характеристики плавно

• Изменение характеристик требует добавление нового интерфейса

• Querylnterface может быть самым важным элементом в COM

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

Рис. 2.2. На что похож интерфейс в объекте

Рис. 2.3. Использование IUnknown:: QueryInterface.

• Подсчет Reference выполнен с помощью IUnknown методов AddRef и Release

• Подсчет Reference контролирует время жизни объекта

- Классы

• Каждый COM объект является примером класса, и каждому классу может быть назначен идентификатор класса

• Класс определяет выполнение группы интерфейсов

- Сервисы для COM Объектов

COM объект выполнен на сервере (в процессе, локально или удаленно)

• Клиенту необходимо знать какой тип сервера, на котором объект выполнен

- COM и Многопоточность

• Многопоточный процесс содержит несколько видимых одновременных потоков выполнения

• В начале COM поддерживал многопоточность, используя раздельную модель

Рис. 2.4 : Три типа серверов

• Сейчас COM также поддерживает три потока

•Свободные потоки требуют большего от программиста