Интересности по COM (548336), страница 5
Текст из файла (страница 5)
• Управление может хранить его свойства многими способами
• Который из IPersist* интерфейсов поддерживает управление, зависит от того, как он хранит свои постоянные данные
• Управление изучает свою среду через окружающие свойства своего контейнера
• Контейнер может поддерживать расширенные свойства
-
IOleControl и IOleControlSite интерфейсы
Лицензирование
• Контролирование незаконного копирования программного обеспечения, представляет трудную проблему
• Лицензирование обеспечивает способ ограничения полезности контроля копирования
• Лицензирование основывается на IclassFactory
• Глобальная лицензия для управления могла бы существовать на специальной машине
• Контейнер может принести вместе с этим лицензию для управления
• Контейнер может приобретать лицензию для управления прежде, чем контейнер запакован для отгрузки
• Никакие стандарты не определены для описания или сохранения лицензионных ключей
-
Расширения ActiveX управления
• Спецификация средства управления 96 расширяет текущее определение ActiveX управления
• Новые особенности также были добавлены, чтобы сделать ActiveX управление более подходящим для Internet
Рис. 7.1. Взгляд пользователя на простое приложение, использующее ActiveX управление
Рис. 7.2. Взгляд разработчика на создание простого приложения, используя Visual Basic и ActiveX управление.
Рис. 7.3. В ответ на щелчок мышью, появляется message box.
Рис. 7.4. Четыре основных аспекта функциональных возможностей ActiveX управления.
Рис. 7.5. Стандартные интерфейсы для ActiveX управления.
Рис7.6. Стандартный интерфейс для контейнера ActiveX управления.
Рис. 7.7. Интерфейсы, используемые управлением и контейнером управления для отправки событий.
Рис. 7.8. Использование страницы свойств объектов, чтобы модифицировать свойства управления
Новые понятия и термины:
-
CATID идентификатор категории
-
CLSID идентификатор класса
-
OLE control теперь называется ActiveX control
Контрольные вопросы:
1. Развитие ActiveX управления
2. Три взгляда на ActiveX управление
3. Методы и события в ActiveX управление
Литература:
1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996
Тема 8. Однородная передача данных и соединяемые объекты
План
1. Однородная передача данных
2. Соединение объектов
1. Однородная передача данных
• Традиционно, имелось много различных способов перемещения данных между приложениями
• Однородная передача данных обеспечивает единственную схему для перемещения данных между приложениями
• Технология соединяемых объектов позволяет объектам отправлять события своим клиентам
• Однородная передача данных
• Однородная передача данных зависит от IDataObject
-Объекты данных
• Объект выполняющий IDataObject известный как объект данных
• IDataObject позволяет доступ к данным из любого источника
• Структура FORMATETC описывает пересылаемые данные
• Структура STGMEDIUM описывает где данные хранятся
• Используя методы IDataObject, объект может читать данные, записывать данные и выполнять другие задачи, связанные с пересылкой данных
• “Перетащить и бросить” позволяет пользователям легко перемещать данные между приложениями
Рис. 8.1. Через IDataObject клиент имеет доступ к данным из многих источников
• “Перетащить и бросить” передает указатель IDataObject
-
Уведомление
• Объект может информировать своего клиента относительно изменений к данным через уведомление
• Объект данных может отправить уведомление своему клиенту через методы в IAdviseSink
• Вызов метода OnDataChange информирует клиента о изменениях в данных
• Потребитель вызывает IDataObject: :Dadvise, чтобы установить связь с источником
• Потребитель вызывает IDataObject: :Dunadvise, чтобы прервать связь с источником
•IAdviseSink полезен только в специфических настройках
2. Соединение объектов
• Соединяемые объекты
• Объектам иногда необходимо вызывать методы их клиентов
• Соединяемые объекты обеспечивают генетический способ, чтобы установить двустороннюю связь между объектом и клиентом
Рис.8.2. Использование IAdviseSink с IDataObject.
-Соединяемые точки и приемники
• Объект, который поддерживает выходящий интерфейс, знает как действовать как клиент для этого интерфейса
• Соединяемый объект должен поддерживать IConnectionPointContainer
• Соединяемый объект может вызывать методы в несколькие различные приемники
-Интерфейс для соединяемых объектов
• Клиент должен послать указатели соединяемого объекта приемнику клиента для исходящего интерфейса
• IConnectionPointContainer – простой интерфейс, содержащий только два метода
• IConnectionPointContainer позволяет клиенту узнать клиенту о точках соединения объекта
• Методы в IConnectionPoint используются, чтобы установить и удалить соединения
• Точки соединения могут быть представлены как обобщенная версия как
IDataObject и IAdviseSink обеспечивают уведомление
- Будущее соединяемых объектов
Рис.8.3. Соединяемый объект, его точки соединения и приемники клиента
Рис. 8.4. Установка и использование соединения.
Новые понятия и термины:
-
Технология соединяемых объектов позволяет объектам отправлять события их клиентам
-
Однородная передача данных обеспечивает единую схему для перемещения данных между приложениями
Контрольные вопросы:
1. Что понимается под однородной передачей данных?
2. Соединение объектов
Литература:
1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996
Тема 9. Распределенный СОМ
План
1. Создание удаленного объекта
2. Использование моникера в распределенном COM
3 Средства безопасного доступа для удаленных объектов
1. Создание удаленного объекта
• DCOM позволяет объектам быть созданными и использованы на удаленных машинах
• DCOMобеспечивает доступ к распределенным сервисам безопасности
•Создание удаленного объекта
- Использование CoCreateInstance
• Клиент может создать удаленный объект, используя CoCreateInstance
• Где созданный объект может быть сконфигурирован в системном реестре
• Как названа удаленная машина зависит от протокола, используемого, чтобы получить доступ к этой машине
• Создание удаленного объекта требует только один пробег вокруг сети
- Используя CoCreateInstanceEx
• Клиент может создать удаленный объект с CoCreateInstanceEx
•
CoCreateInstanceEx также позволяет клиенту определить где объект должен быть создан
Рис. 9.1. Использование CoCreateInstance, чтобы создать удаленный объект
Рис. 9.2. Использование CoCreateInstanceEx, чтобы использовать удаленный объект и запросить указатели множественного интерфейса
2. Использование моникера в распределенном COM
-
Объединение создания и инициализации
• Клиент обычно инициализирует объект после его создания
• Удаленные объекты могут также потребовать инициализации
• CoGetInstanceFromFile и CoGetInstanccFromIStorage объединяют создание и инициализацию
• Значение ActivateAtStorage является причиной того, чтобы объект был создан там, где имеется его постоянное состояние
Использование Moniker
• Moniker может создать объект на удаленной машине
• Мoniker может создать удаленный объект через вызов CoCreateInstance
• Moniker использует значение ActivateAtStorage
• Мoniker файла может создать объект на машине, где файл , на который он ссылается
• URL moniker может создать объект на машине, определенной URL моникера
Рис. 9.3. Использование файлового moniker. Чтобы создать и инициализировать удаленный объект.
3. Средства безопасного доступа для удаленных объектов
• Доступ к удаленному объекту
-Объект вызова удаленной процедуры RPC
• Вызовы удаленных методов основываются на объекте RPC
• Объект RPC включает два различных протокола
• Вызов объекта RPC (ORPC ) требует соединение информации
-OXID и решатели OXID
• OXID идентифицирует экспортера объекта,который может быть процессом или его частью (если многопоточный процесс )
• Каждая машина DCOM запускает решатель объекта
• OXID отображает в информацию соединения для экспортера объекта
-OBJREF: Передача указателей интерфейса
• ORPC использует NDR, чтобы представить параметры вызова в сети
• Указатели объекта используются, чтобы передавать указатели интерфейса между объектами
• Данные OBJREF, ОХID решатель могут установить соединение информации для удаленного указателя интерфейса
Рис. 9.4. OXID решатель запускается на всех машинах, которые поддерживают DCOM
• Один OXID решатель может запросить другой, чтобы получить информацию соединения
• Дизайн DCOM уменьшает перегрузку, которою несет объект
• Объекты делают «ленивую» регистрацию протокола
-Роль SCM
• Создание удаленного объекта основывается на IActivation
-Оптимизация lUnknown
• Интерфейс IRemUnknown позволяет оптимизацию вызовов методов IUnknown
• Клиенты не вызывают IRemUnknown методы прямо
• Интерфейс IMultiQI позволяет клиенту запросить несколько указателей интерфейсов одновременно
-Pinging («свист»)
• Pinging позволяет удаленному объекту узнать о «безвременном отключении» клиента
• Отправляется единичный пакет, чтобы пропинговать несколько интерфейсов на нескольких объектах
Р ис. 9.5. Чтобы получить информацию соединения для нового объекта OBJREF, OXID resolver делает запрос машине, на которой объект определен запущен его OBJREF
Рис. 9.6. SCM спрашивает SCM в другой системе, чтобы создать объект через интерфейс IActivation
Рис 9.7. OXID объект управляет удаленными вызовами IUnknown для их объектов
• Обеспечение Безопасного Доступа к Отдаленным Объектам
• DCOM обеспечивает безопасность и активизации, и вызова
-Безопасность активизации
• Безопасность активации управляет кто может вызвать сервер удаленно
• Несколько опций существуют для установки основной идентичности нового объекта
-Безопасность вызова
• Безопасность вызова управляет тем, от кого объект может получать вызовы и др.
•Сегодня используются многие механизмы распределенной безопасности
• DCOM позволяет использовать несколько механизмов безопасности
• Автоматическая безопасность использует CoInitializeSecurity, чтобы установить опции безопасности для сего процесса
• Администратор может установить безопасность всей сети по умолчанию
• По-интерфейсная безопасность устанавливает опции безопасности для индивидуальных интерфейсов