Интересности по COM, страница 4
Описание файла
Документ из архива "Интересности по COM", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.
Онлайн просмотр документа "Интересности по COM"
Текст 4 страницы из документа "Интересности по COM"
Рис. 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
2. Асинхронный моникер
• Асинхронные moniker не заставляют своего клиента ждать, пока он начинает и инициализирует объект
• URL moniker это асинхронные monikers
• URL monikerможет загрузить данные объекта по частям, нежели целиком
- Как асинхронные моникеры работают
• Асинхронный клиент моникера выполняет IBindStatusCallback
• Асинхронный моникер посылает клиенту указатель к его интерфейсу IBinding
• Асинхронный моникер и его клиент связываются через методы в IBinding и IBindStatusCallback
• Асинхронный моникер информирует своего клиента, когда больше данных или весь объект являются доступными
- Интерфейс IPersistentMoniker
• Посредством поддержки IPersistentMoniker, объект может определить свои постоянные данные с моникер
• Обобщенный подход к наименованию
• Клиент может использовать одну или две библиотечные функции, чтобы направить общие символьные строки в моникеры
• Обе функции могут положиться на коде со специфическим именем, чтобы создать соответствующий моникер
• Новый из двух, MkParseDisplayName, принимает названия URL-стиля
• Эти функции обеспечивают единственную точку входа в любое виртуальное именованное пространство
Рис 6.7. Интерфейсы поддерживаются асинхронным моникером и его клиентом
Новые понятия и термины:
-
Моникер обозначает специфический образец объекта
-
Моникер это объект, который поддерживает интерфейс Imoniker
Контрольные вопросы:
1. Что такое моникеры?
2. Для чего необходимы моникеры?
3.Асинхронный моникер
Литература:
1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996
Тема 7. ActiveX управление
План
1. Эволюция ActiveX управления
2. Три взгляда на ActiveX управление
3. Методы и события в ActiveX управление
1. Эволюция ActiveX управления
• Полезно определить стандарты для компонентов
• ActiveX управление - программный компонент, который выполняет обычные задачи стандартными способами
• Любые виды контейнеров управления доступны
• Развитие управления AcriveX
• VBX - более ранняя технология компонентов, созданная для Visual Basic
• VBX был заменен OLE управлением
• OLE управления теперь называются ActiveX управлением
• Фактически нет никакого различия между ActiveX управлением и COM объектом
• Компонентные категории
• Управлениям первоначально давали регистрационное ключевое слово Control
• Управление может теперь использовать компонентные категории, чтобы определить его возможности и требования
• Компонентная категория может использоваться, чтобы идентифицировать любую совокупность функциональных возможностей
• Компонентная категория может также указывать какое управление требует контейнер
• CATID и CLSID не одно и тоже
2. Три взгляда на ActiveX управление
- Взгляд конечного пользователя
• Конечный пользователь не знает, ActiveX управление используется
• Контейнер управления и управление, которое он использует, напоминают одно приложение
- Взгляд разработчика приложения
• Разработчик приложения включает средство управления в контейнер управления
• Доступные контейнеры управления включают Visual Basic,web browsers и др.
• Широкое разнообразие ActiveX управления можно приобрести
• Организации также могут создавать свои собственные средства управления
• Во время проектирования, разработчик выбирает массив средств управления
• Разработчик устанавливает средство управления в форму
• Средство управления может иметь свойства
• Средство управления может также посылать события
• Контейнеры управления обычно позволяют разработчику прикреплять код к событиям
Sub SpinButtonl_SpinUp()
MsgBox("Up arrow clicked") End Sub
Sub SpinButtonl_SpinDown()
MsgBox("Down arrow clicked") End Sub
• Во время выполнения, управление может делать несколько действий в ответ на щелчок мыши
• ActiceX управление может быть очень простым или очень сложным
• Средства управления имеют методы
• Обычно более сложные средства управления предлагают более мощный набор методов
• Средство управления предлагает свои методы через dispinterfaces
-Точка зрения конструктора управления
• Разработчик имеет несколько выборов как построить управление
• Спецификация ActiveX управления определяет четыре главных аспекта Функциональных возможностей управления
• Как работает управление
- Интерфейсы для управления и для контейнеров управления
• Каждый контейнер управления должен выполнить некоторые интерфейсы
• Даже приложения, которые не являются контейнерами управления, могут использовать средства управления
• Контейнер управления должен функционировать правильно даже с простым средством управления
- Обеспечение пользовательского интерфейса
• Средство правления обеспечивает пользовательский интерфейс, используя
-
OLE внедрение и активизация на месте
• ActiveX управления это обычно внутри процессные серверы
• Средство управления может поддерживать внутренюю/ внешнюю активацию
• Код управления не загружен, пока он станет необходимым
3. Методы и события в ActiveX управление
- Методы
• Методы средства управления определяются в обычном dispinterface
• ActiveX управление обычно поддерживает библиотеку типов
-События
• Средство управления может отправить события в свой контейнер
• Событие это метод, который управление вызывает в свой контейнер
• Контейнер выполняет интерфейс для событий управления
• Контейнер строит свои интерфейсы событий динамически, полагаясь на библиотеку типов управления
• Управление может поддерживать IProvideEClassInfo2, чтобы дать контейнерный доступ к его библиотеке типов
• Контейнер использует соединения точек, чтобы передать указатель dispinterface события управлению
-Свойства
• К свойствам управления обращаются через dispinterface методы
• Страницы свойств обеспечивают стандартный способ, чтобы проверить и установить свойства управления
• Каждая страница свойств обрабатывается отдельным COM объектом
• Контейнер может также изучить изменения в свойствах