
- •6. Системное программное обеспечение для коммуникаций
- •6.1. Общая характеристика коммуникаций
- •6.2. Концепции технологии Клиент-Сервер
- •6.3. Внутренние коммуникации между процессами
- •6.3.1. Неименованные каналы
- •6.3.2. Обмен сообщениями
- •1. Подготовка данных для передачи в Clipboard;
- •2. Открытие Clipboard
- •4. Закрытие Clipboard
- •6.3.5.1. Введение
- •6.3.5.2. Понятие документно-ориентированной среды
- •6.3.5.3. Принципы ole
- •6.3.5.4. Характеристика технологии ole 2.0
- •6.3.5.4.4. Дополнительные возможности ole 2.0:
- •6.3.5.4.5. Внутренние механизмы ole 2.0
- •6.3.5.4.6. Перспективы ole
- •6.3.5.4.7. Недостатки ole
- •6.3.5.5. Технология проектирования ole-контейнера
- •6.3.5.5.1. Трехуровневая адресация ole-объекта
- •6.3.5.5.2. Общая характеристика технологии создания ole-клиента
- •6.3.5.5.3. Методика создания приложения с ole-контейнером
- •1. Создание формы с mdi - многодокументным интерфейсом
- •2. Разработка процедуры вставки объектов
- •3. Разработка процедуры переноса объектов из Clipboard
- •4. Разработка процедуры перетаскивания объектов
- •5. Разработка процедур поддержки хранения объектов в файлах
- •6.3.5.5.4. Выводы
6.3.5.5. Технология проектирования ole-контейнера
6.3.5.5.1. Трехуровневая адресация ole-объекта
Как уже было сказано, разработка приложения, поддерживающего протокол OLE, является чрезвычайно сложной задачей. Сложность повышается, если отсутствуют внятные описания этого протокола.
Для того, чтобы иметь представление о характере задач, возникающих при создании OLE-приложения, рассмотрим этапы его создания на примере создания OLE-контейнера в Delphi. Delphi с его средствами визуального проектирования и набором готовых компонентов дает возможность хотя бы обозреть этапы создания OLE-приложения.
Вспомним трехуровневую адресацию данных в протоколе DDE. В OLE также поддерживается трехуровневая адресация объектов следующего вида:
Класс OLE-объекта определяет приложение-сервер, которое создало OLE-объект. Класс должен быть определен как для связанного, так и для встроенного объекта.
Документ OLE-объекта определяет файл-источник, который содержит данные для объекта. Документ должен быть определен обязательно только для связанного объекта.
Элемент (item) OLE-объекта определяет, какая часть OLE-документа содержит данные для связывания или встраивания. Элемент используется если необходимо использовать меньшую часть данных, чем целый файл документа.
6.3.5.5.2. Общая характеристика технологии создания ole-клиента
Суть создания приложения OLE-клиента состоит в добавлении в форму - главное окно приложения, специального невизуального компонента TOLEContainer, берущего на себя все функции по загрузке и сохранению объектов, а также поддерживающего внутренние протоколы OLE, которые нигде не документированы, и поэтому сложны для изучения. Именно поэтому наш рассказ грешит тенденцией к описательному уровню рассмотрения OLE.
Кратко идея выглядит следующим образом. Построение OLE приложения-клиента связано с помещением компонента OleContainer на форму. Помещение нового объекта связано с вызовом метода InsertObjectDialog, а считывание объекта из Clipboard - с вызовом метода PasteSpecialDialog.
Нельзя просто вставить любой файл в контейнер. Вставить можно только файл, который связывается системой с сервером OLE. При инсталляции приложение, обладающее возможностями сервера, регистрируется в Реестре системы.
Действия, которые могут быть выполнены с объектом OLE, описываются в Реестре в разделе VERB. Например, для объекта mplayer такими действями являются: Edit, Play, Open.
Эти действия хранятся в свойстве ObjectVerbs контейнера.
Итак, этот компонент помещается в форму. Для загрузки компонента объектом существуют специальные функции, вызов которых сопровождается открытием соответствующего диалогового окна.
Эти функции решают следующие задачи по загрузке:
создание нового объекта;
чтение объекта из Clipboard;
перетаскивание объекта из сервера.
Загрузка компонента с помощью одного из перечисленных вариантов сопровождается установкой таких свойств компонента как Класс, Документ и Элемент.
Существует два варианта настройки свойств компонента - на этапе проектирования приложения и на этапе выполнения.
На этапе проектирования, находясь в среде разработки Delphi, активизация таких свойств, как Класс, Документ и Элемент, приводит к открытию диалоговых окон, в которых предлагается выбрать тип OLE-объекта - новый или существующий, а также класс, документ и элемент.
На этапе выполнения приложения подходящие функции вызываются путем активизации соответствующих пунктов меню.
При выборе ОК в соответствующем диалоговом окне вызывается приложение-сервер, в котором создается новый объект, или которому передается существующий документ-источник, в зависимости от выбранных опций в диалоговом окне. После редактирования объекта можно выйти из сервера, а в компоненте-контейнере приложения-клиента окажется сохраненным отредактированный объект.