Вопросы для обсуждения. Множественность интерфейсов увеличивают гибкость объектов

Рис. 7-1 Объект СОМ

Множественность интерфейсов увеличивают гибкость объектов:

· Возможность определять дифференцированный доступ для разных клиентов

· Совместимость сверху вниз при расширениях: доступ к новому сервису определяется через новый интерфейс

Класс в СОМ понимается как конкретная реализация набора интерфейсов; различные реализации одного и того же набора интерфейсов означают полиморфизм. Что касается наследования, то СОМ-объекты поддерживают только наследование интерфейса, поскольку наследование реализации считается потенциально опасным способом повторного использования, нарушающим инкапсуляцию родителя. Всякий СОМ-объект - экземпляр некоторого класса; каждому классу присваивается CLSid. На компьютере должна иметься библиотека СОМ, реализующая базовые сервисы; она поддерживает Registry-таблицы CLSid в местоположении кода сервера. С точки зрения программиста, вызов метода аналогичен вызову локальной функции, но на самом деле выполняемый код может быть частью или библиотеки, или отдельного процесса, или ОС или даже располагаться на другом компьютере - доступ ко всему осуществляется единообразно (фактически по модели RPC) - см. рис. 7-2. Вопросы 7 - 9.

Интерфейсы СОМ идентифицируются именем, начинающимся с I (напр., IspellChecker) + глобально уникальным идентификатором GUID: 16 байтов, включая метку времени и сетевой адрес компьютера. Таким образом, есть возможность именовать интерфейсы во всемирном масштабе (то же и для классов СОМ). Вопрос 10.

СОМ включает в себя несколько технологий, в частности

· OLE (Object Linking & Embedding) - поддержка составных документов

Вопросы 11, 12.

· UDT (Uniform Data Transfer) - стандартный способ обмена данными

· Структурированное хранилище - дисковый файл для хранения данных объектов, пока они не активны

· Автоматизация - доступ к сервисам диалоговых программ из других программ

· Управляющие элементы ActiveX - развитие OLE для локальных и глобальных сетей.

 
 


С

ОМ делает единообразными следующие традиционные способы вызова сервисов:

Вызовы библиотечных подпрограмм

Межпроцессная коммункация

Системные вызовы

Сетевые коммуникации

Рис.7-2. Унификация способов доступа к сервисам в СОМ

 
 


Рис. 7-3. MS Internet Explorer 3.0 построен из отдельных компонентов, объединенных с помощью СОМ

Управляющий элемент ActiveX - это программный компонент, выполняющий общие операции стандартным способом. Путем установления стандартных интерфейсов и правил создания контейнеров управляющих элементов (клиентских программ) спецификация управляющих элементов ActiveX представляет общую схему, каркас для построения мощных многофункциональных компонентов как в сетевом, так и в изолированном (standalone) окружении. Часто в качестве контейнера управляющих элементов используется MS Visual Basic или Internet Explorer (см. рис. 7-3).

Здесь общие функции браузера (как переход по ссылке), реализованные в процессе "Рамка", отделены от функций загрузки, отображения и редактирования информации различных типов: обычных web-страниц, документов Word, трехмерной графики и т.д. Например, web-страница может содержать таблицу Excel; тогда автоматически загружается MS Excel или (что важно!) более простое средство просмотра Excel-таблиц, оформленное как один или несколько управляющих элементов ActiveX.

Управляющих элементы реализуются как DLL и выполняются целиком внутри адресного пространства своего контейнера, что ускоряет обмен данными. Заметим, что связь клиент-сервер на рис. 8-3 двусторонняя: клиент может выставлять запросы серверу (callbacks), тогда сервер оповещает клиента о запрошенных асинхронных событиях (например, об обновлении данных), вызывая соответствующие методы контейнера. Это позволяет создавать web-страницы с активным содержимым, взаимодействующие с пользователем.

Технология ActiveX конкурирует с Java. А именно, Java Beans (кофейные зерна) функционально аналогичны управляющим элементам ActiveX. Отличия - в реализации и сегменте рынка: MS Windows VS Unix. Пока количество стандартных компонентов ActiveX на рынке превышает то же для Java Beans. Вопрос 13.

1. Что такое конфликт имен?

2. Что называется строгой типизацией?

3. Чем похожи и чем отличаются инкапсулированные данные от глобальных и локальных?

4. Каково технологическое преимущество раздельной компиляции разделов интерфейса и реализации модулей?

5. Структура С: struct Date { int day, month, year }; не защищена от присваивания 31 июня и т.п. Предложите описание класса Date в С++, защищенного от таких ошибок.

6. Почему?

7. Упорядочите способы вызова сервисов (рис. 7-2) по быстродействию.

8. В чем достоинства и недостатки унификации способов доступа к сервисам в СОМ?

9. Почему обновление версий программных продуктов, собранных на основе СОМ, более простое дело, чем то же для библиотек подпрограмм или классов объектов?

10. Предложите свой способ генерации глобально уникальных идентификаторов.

11. Хрестоматийный пример OLE-составного документа - это Excel-таблица, внедренная в Word-документ. Предложите другие полезные составные документы.

12. MS называет OLE технологию "документоцентрической" (подобно "гелиоцентрической" системе Коперника). Какие элементы современных UI (например, вWindows) можно также называть "документоцентрическими"?

13. СОМ-технология ориентирована на создание больших приложений из небольших многократно используемых компонентов. Предложите, на какие объекты СОМ можно разделить "монолитный" Word, чтобы другие приложения могли бы пользоваться их сервисами выборочно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: