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

2. Дуальный интерфейс

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

• Методы в dispinterface проще для клиентов Visual Basic для вызова, чем клиентов С++ предпочитающих vtables

• Двойной интерфейс обеспечивает выгоды, от обоих интерфейсов dispinterfaces и vtable

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

Рис. 4.4. Двойной интерфейс открывает свои методы и через vtable, и через IDispatch.

Interface ISpellChecker : IDispatch {

import "unknown.idl" ;

import "oaidl.idi";

[propget] HRESULT BritishSpellings([out, retval] boolean *sp) ;

[propput] HRESULT BritishSpellings([in] boolean sp) ;

HRESULT LookUpWordt[in] BSTR word, [out] boolean *found) ;

HRESULT AddToDictionary([in] BSTR word)

}

[uuid(B623E460-1837-HCF-9946-444553 540000) ,

version(1.0)]

library SpellCheckerLib {

importlib("stdole32.tlb") ;

[uuid(B623E460-1837-llCF-9946-444553540000)],

coclass CoSpellChecker {

interface ISpellChecker

}

}

Рис. 4.5. Иллюстрация удаленной автоматизации

• Все двойные интерфейсы наследуются от IDispatch

• DISPID могут быть назначены автоматически

• Обычно определяются новые интерфейсы как двойные

Удаленная автоматизация

• Удаленная автоматизация позволяет методам в dispinterface и двойные интерфейсы, которые могут быть вызваны через сеть

• Удаленная автоматизация это не тоже самое что DCOM

• Удаленная автоматизация использует RPC между proxy и stub

• Все вызовы методов проходят через proxy и stub на серверной машине, вызывающей

менеджера автоматизации

Автоматизация сегодня

• Автоматизация сейчас означает программируемость, не просто использование IDispatch и dispinterfaces

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

  • Создание программируемых приложения позволяет другому программному обеспечению, также как и людям, использовать его сервисы. Обеспечение этой программируемости, использующей COM называется Автоматизацией

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

1.Что понимается под автоматизацией

2. Взгляды на автоматизацию: пользовательский, разработчика ПО

3.Дуальный интерфейс

Литература:

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

Тема 5. Постоянство

План:

1. Понимание постоянства

2. Структурная память для файлов

3. Контроль и постоянство объекта

1. Понимание постоянства

• Постоянные данные объекта - информация о состоянии объекта, которая сохранена между созданиями экземпляра объекта

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

•Клиент объекта обычно контролирует, когда постоянные данные объекта загружаются и сохраняются

• Структурная память это постоянный сервис, основанный на COM

•Интерфейсы IPersist* позволяют клиентам контролировать постоянство объекта

2. Структурная память для файлов

Структурная память

• Объект COM может сохранить свои постоянные данные многими способами

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

• Приложениям, создающим сложные документы, также необходимо разделять файл

• Структурная память – это важный постоянный сервис в мире COM

  • Память и потоки

• В структурной памяти, один дисковый файл становится сложным файлом, состоящим из памяти и потоков

• Структурная Память по существу создает иерархическую файловую систему внутри каждого сложного файла

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

•Потоки и только потоки байтов с не системно определенной внутренней структурой

• Каждая память и поток доступны через интерфейсы IStorage и IStream

• Владелец памяти может свободно назначать названия потокам и памяти, которые он содержит содержит

• Имя корня памяти – это тоже самое что название файла

• Названия, начинающиеся с определенных символов зарезервированы для использования другим программным обеспечением

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

Рис. 5.1. Дисковый файл , содержащий память и потоки

Рис 5.2. COM объект, использующий память и два потока