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

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

• Создание COM Объектов

-Библиотека COM

• Библиотека COM обеспечивает основные сервисы, которые необходимы объектам и клиентам

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

• Объект, созданный с использованием только COM библиотеки, является неинициализированным экземпляром класса

• Если необходимо, клиент может явно инициализировать новый экземпляр объекта

-Создание Единственного объекта

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

• Клиент определяет CLSID, IID, и тип сервера, который он хочет, чтобы библиотека COM запустила

Рис. 2.5. Создание объекта с CoCreateInstance

• DCOM позволяет создание удаленных объектов

• Механизм COM контролирует, какие клиенты могут начать какие сервисы

-Создание множественных объектов одного класса : Производящий класс

• Производящий класс может создать множественные объекты для одного класса

• CoCreateInstance использует производящий класс, который скрыт от клиента

• Каждый производящий класс поддерживает интерфейс IClassFactory

• IClassFactory2 интерфейс добавляет методы, которые поддерживают лицензирование

• Клиент вызывает CoGetClassObject, чтобы получить указатель на производящий класс

• Клиент может использовать IClassPactory::CreateInstance чтобы создать новый экземпляр объекта

- Эмуляция

• Эмуляция позволяет одному классу играть роль другого

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

  • Инициализация COM объектов

Рис. 2.6. Создание объекта с помощью производства класса

• Первый указатель интерфейса, который запрашивает клиент, это часто интерфейс, используемый, чтобы запросить инициализацию

Повторное использование объектов

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

• COM обеспечивает повторное использование или содержанием или объединением

• В обоих механизмах «внешний» объект повторно использует «внутренний» объект

  • Содержание

• С содержанием внешний объект, проще, клиент внутреннего объекта

• Содержание – просто часто используемое

  • Объединение

• Хотя это просто, содержание не всегда является наиболее эффективным решением

• С объединением, внешний объект представляет интерфейсы внутреннего объекта как свои собственные

• Так как объединение требует специальную поддержку от внутреннего объекта, не все объекты могут быть объединены

Рис. 2.7. Повторное использование объектов через содержание

Рис. 2.8. Повторное использование объекта путем объединения

• Специальная поддержка необходима, чтобы гарантировать IUnknown методы работают так как ожидалось

• Внешний объект передает внутреннему объекту указатель на интерфейс IUnknown

Важность COM

• Пока COM сама по себе проста, она позволяет создание мощного, эффективного программного обеспечения

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

  • GUID (Globally Unique Identifier) глобальный уникальный идентификатор

  • IID (interface identifier) идентификатор интерфейса

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

1. Модель компонентных объектов

2.Интерфейсы в COM: vtable IUnknown интерфейс

3. Создание COM. Клиент/серверная модель COM

Литература:

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