- •Межобъектная Связь
- •Ташкент
- •Содержание
- •2. Com модель
- •3. Сложные документы
- •4. РаспределенныйCom
- •Тема 2. Модель компонентных объектов (com)
- •1. Описание сом объектов
- •2. Интерфейсы вCom
- •3. Создание com объектов
- •Тема 3. Пакование и информация типов
- •1. Что такое пакование На что действительно указывает указатель интерфейса
- •2. Информация типов
- •Тема 4. Автоматизация
- •1.Что понимается под автоматизацией
- •2. Дуальный интерфейс
- •Тема 5. Постоянство
- •1. Понимание постоянства
- •2. Структурная память для файлов
- •3. Контроль постоянства объекта
- •Тема 6. Моникеры
- •1. Что такое моникеры?
- •2. Асинхронный моникер
- •Тема 7.ActiveXуправление
- •1. Эволюция ActiveX управления
- •2. Три взгляда наActiveXуправление
- •3. Методы и события вActiveXуправление
- •Тема 8. Однородная передача данных и соединяемые объекты
- •1. Однородная передача данных
- •2. Соединение объектов
- •Тема 9. Распределенный сом
- •1. Создание удаленного объекта
- •2. Использование моникера в распределенномCom
- •3. Средства безопасного доступа для удаленных объектов
- •Тема 10. ActiveX, Internet, и World Wide Web
- •1.ActiveXдокументы
- •2.ActiveXдокументы иWeb
- •Тема 11. Введение в corba
- •1. Знакомство с набором спецификаций omg
- •2. Поддержка Анализа & Проектирования
- •3. Основы объектов
- •Что такое объект?
- •4. Corba Основы взаимодействия
- •5. Что такое orb
- •Список Литературы
- •Приложение а. Глоссарий
3. Контроль постоянства объекта
• Контролирование постоянства объекта
• Клиент может инициализировать объект, который он создает, спрашивая объект, чтобы загрузить его постоянные данные
•Клиент обычно просит объект загрузить его постоянные данные через один из интерфейсов IPersist*
• Объект может поддерживать один или более интерфейсов IPersist*
• Объект обычно не знает где найти свои постоянные данные. Это должно быть сказано его клиентом
- Интерфейсы IPersistStream и IPersistStreamInit
• Объект поддерживает IPersistStream и IPersistStreamInit, если его постоянные данные могут быть сохранены в одном потоке
- Интерфейс IPersistStoragen
• Объект поддерживает IPersistStorage, если его постоянные данные сохранены в одном или более потоках ниже памяти
Рис. 5.3 Иллюстрация интерфейсов IPersistStream и IPersistSreamInit
Рис. 5.4. Иллюстрация интерфейса IPersistantStorage
-Интерфейс IPersistFile
•Объект поддерживает IPersistFile, если его постоянные данные сохранены в обычном файле
-Интерфейс IpersistPropertyBag
•Клиент COM объекта может захотеть сохранить эти данные объекта
•Если объект поддерживает IPersistPropertyBag, он может сохранить свои постоянные данные в сумке с клиентно-обеспеченными свойствами
•Клиенты объекта, поддерживающего IPersistPropertyBag, должен выполнить интерфейсы IPropertyBag и ErrorLog
•Клиент, не объект, контролирует как и где свойства объектов сохранены
-Интерфейс IPersistMemoryInterface
•Объект, который поддерживает IPersistMemory может передавать свои постоянные данные клиенту в большую разделенную память
Рис. 5.6. Иллюстрация IPersistPropcrtyBag и связанных с ним интерфейсов
Рис. 5.7 Иллюстрация интерфейса IPersistMemory
Новые понятия и термины:
Постоянные данные объекта - информация о состоянии объекта, которая сохранена между созданиями экземпляра объекта
Имя корня памяти – это тоже самое, что название файла
Контрольные вопросы:
1.Что понимается под постоянством?
2. Структурная память для файлов
3. Контроль постоянства объекта
Литература:
1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996
Тема 6. Моникеры
План
1. Что такое моникеры?
2. Асинхронный моникер
1. Что такое моникеры?
• Обозначение объектного образца требует определение его методов и данных
• Сам COM не предлагает способов обозначения образца объекта
• Определение Моникера (Moniker
)
• Моникер обозначает специфический образец объекта
• Моникер это объект, который поддерживает интерфейс Imoniker
• Клиент может спросить moniker связать объект с именами moniker
• Моникер может делать все захочет, чтобы создать и инициализировать объект, который он назвал
• Моникеры может сильно облегчить жизнь клиента
-Пример сложных документов
• Вставленные данные документа сохранены в его файле контейнера
• Файл контейнера сохраняет только указатель на присоединенные данные документа
• Указатель – это moniker
•Что же действительно сохранено – это постоянные данные для moniker
Рис. 6.1. Использование Моникера
Рис. 6.2 Файл контейнера сохраняет постоянные данные для moniker, который обращается к присоединенному документу.
Пример базы данных
• База данных OLE обеспечивает доступ основанный на COM к различным видам данных
• Моникер может создать объект и затем инициализировать его с результатом из запроса к базе данных
• Работа с Моникером
Классы Моникер
• Были определены различные стандарты классов moniker
• Постоянные данные файлового moniker –это название файла, пока постоянные данные элемента moniker строка символов
• Составной моникер ведет как контейнер упаковки других моникер
- Создание Моникер
• Объект – названия moniker могут обеспечить постоянные данные moniker
• Клиент может приобретать постоянные данные moniker многими другими путями
• Выполнение обеспечивается для стандартных классов moniker
Рис. 6.3. Пример постоянных данных для наиболее важных классов моникер.
Рис. 6.4. Составной moniker с указателями на его три компонентных моникер.
• Стандарт моникер– создает образец используя поставляемые в составе системы функций
• Библиотека функций не доступна для нестандартных классов moniker
- Пример соединения моникер
• Составной моникер обслуживает указатель на каждый из его компонентных моникер
• Клиент видит только компонентный моникер
• Компонентные морникер связываются справа налево
• Если объект уже запущен, связывание может быть более эффективным
• Запуск объектной таблицы позволяет моникер определить тот ли объект, чье имя запущено
• Если его цель не достигнута, то элементный moniker вызывает BindToObject на моникер слева
• моникер может использовать расширение имени файла, чтобы определить CLSID объекта
• Объект, называемый файловым moniker, должен поддерживать IPersistFile
• Элементные moniker полагаются на lOleltemContainer
Рис 6.5. Каждый моникер полагается на моникер слева, надеясь избежать выполнения большей работы , чем необходимо.
Рис. 6.6. Файловый и элементный моникер, инициализирующие свои объекты.
• Элементный moniker использует I0leItemContainer::GetObject чтобы создать и инициализировать целевой объект
• моникеры полезны с соединенными документами, но также имеет и более широкое применнение
• Связывающий контекст поддерживает разделенную информацию, используемую в процессе связывания
•Запущенная таблица объекта – это объект , который поддерживает интерфейс IRunningObjectTable
• Моникер может запросить запущенную таблицу объекта для объекта, который моникер назвал
- Интерфейс IMonikerInterface
• IMoniker –относительно сложный интерфейс
• IMoniker наследует от IpersistStream