Модель многокомпонентных объектов. Технология OLE.
Технология DDE.
Обмен данными между документами. Способы совместного использования данных.
Лекция № 3.
Параллельная работа и обмен информацией между WINDOWS приложениями. Создание комбинированного документа.
1. Как уже говорилось, WINDOWS обеспечивает возможность одновременного выполнения нескольких программ и переключения с одной программы на другую. При этом возникает задача передачи данных из одного документа в другой, совместного использования данных и т.д.
В простейшем случае для использования фрагмента данных из одного приложения в другом можно воспользоваться простейшим инструментом, который предоставляет WINDOWS – Буфером обмена (Clipboard).
Буфер обмена можно представить как некоторое динамическое пространство оперативной памяти для временного размещения данных обмена. Каждое последующее занесение в буфер какой бы то ни было информации уничтожает предыдущее содержание. Для занесения информации в буфер обмена и ее извлечение оттуда приложения WINDOWS имеют в своих меню команды копировать, вырезать, вставить.
Для решения серьезных задач WINDOWS обеспечивает два основных способа совместного использования данных различными приложениями: динамический обмен данными (Dynamic Data Exchange — DDE), а также связывание и внедрение объектов (Object Linking and Embedding — OLE).
2. Д инамический обмен данными (DDE) является наиболее старой технологией обмена данными между приложениями. Тем не менее, поддержка DDE была сохранена в Windows 98, эта технология будет использоваться еще достаточно долго.
Технология DDE опирается на связь, установленную между фрагментами одного документа, а также между документами различных приложений. Наличие такого механизма связи позволяет автоматически актуализировать данные в документе-приемнике при изменениях в источнике данных. DDE представляет собой модель взаимодействия процессов - протокол, с помощью которого приложение может организовать канал обмена данными с DDE-сервером, находящимся на той же машине. DDE — это протокол обмена сообщениями, позволяющий инициировать выполнение команды одного приложения из другого. Изначально технология DDE использовалась для выполнения операций с документами без открытия приложений и при работе с Буфером обмена Windows. Макроязык DDE включает в себя как команды DDE, так и команды макроязыка приложения. Таким образом, для использования макроязыка DDE недостаточно изучить внутренний язык интересующего приложения, необходимо еще знание DDE и знание языка серверного приложения. DDE - это асинхронный протокол. Иными словами, после установления связи вызывающая сторона передает запрос и ожидает возврата результатов.
Пример: в графическом редакторе открывают файл рисунка, фрагмент которого выделяется и копируется в буфер обмена. Предполагается вставка этого фрагмента в текстовый документ в качестве иллюстрации. При последующей команде Специальная вставка/Установить связь или Установить связь фрагмент визуально отображается в документе текстового процессора, при этом создается ссылка на файл-источник. Все изменения рисунка автоматически отображаются и в документе-приемнике. Важно, что DDE – связь поддерживается, пока работают приложения, между которыми эта связь установлена. При изменениях в файле-источнике следует первым запускать приложение, обрабатывающее этот файл, а затем приложение с документом-приемником. В этом случае DDE-связь будет обновляться сразу же при внесении изменений в приложении-источнике.
Макроязык DDE слишком сложен,— не только обычные пользователи, но и многие программисты считают работу с ним трудной. Поэтому, вопреки ожиданиям Microsoft, технология DDE не реализовала в полной мере всех возложенных на нее надежд.
3. Низкая популярность DDE вынуждала Microsoft искать различные способы его усовершенствования. В качестве технологии более высокого уровня была реализована OLE 1.0 OLE 1 (Object Linking and Embedding — связывание и внедрение объектов). Она расширила возможности протокола DDE и, используя его как базовый механизм коммуникаций, позволила активизировать встроенный объект в документе, т. е. получить составной документ.
Определимся с некоторыми терминами:
Клиент (Client). Этим термином называется приложение, содержащее внедренные или связанные объекты. Например, если поместить лист электронной таблицы в документ текстового процессора, то текстовый процессор станет клиентом. Совмещая клиентское приложение и составной документ, можно построить приложение, которое будет только обрамлением для другого приложения
Сервер (Server). Сервер — это приложение, которое используется клиентским приложением для работы с конкретным объектом. Внедренные или связанные объекты находятся в форматах того приложения, в котором они были созданы. Клиент обязан вызвать исходное приложение (сервер) для любых изменений содержимого объекта. В действительности при работе с составными документами одновременно используются два приложения. В случае OLE предполагается, что серверное приложение располагается на том же компьютере. При внедрении листа Excel в документ Word на компьютере должны быть установлены оба эти приложения. При использовании технологии ActiveX потребность в наличии серверного приложения именно на том же компьютере отпадает (хотя его наличие может сильно сократить время работы). При разработке надстроек для Internet Information Server вся работа с объектом может происходить исключительно на сервере, который будет возвращать на локальный компьютер только данные, необходимые для отображения объекта.
Составной документ (Compound document). Это документ, который содержит один или более объектов (других документов). Каждый объект OLE рассматривается как составной документ.
Объект (Object). Объектом называется порция данных, которую можно перемещать из одного приложения в другое в формате, используемом в исходном приложении. Объекты можно создавать на основе любых данных, если используемое для этой цели приложение поддерживает OLE. Важно отметить, что объекты OLE, в отличие от обычных данных, могут обеспечить выполнение гораздо большего числа операций, нежели только перетаскивание мышью или работа с Буфером обмена WINDOWS.
Контейнер (Container). Контейнер — это объект, содержащий внутри себя другие объекты. Упрощенно контейнер можно представить как папку на диске. Однако, в отличие от папки, контейнер объектов OLE может содержать не только файлы, но и объекты любых других типов.
Технология OLE опирается на связь, установленную между документом и приложением, а также на механизм, разработанный для связи приложений. Наличие такого механизма позволяет перенести в выходной документ фрагмент или файл / документ/ некоторого приложения, при этом он приобретает свойства встроенного или связанного объекта. Выходной связанный документ приобретает при этом свойства составного документа, т. е. Документа, имеющего встроенные или связанные объекты различных форматов, созданные другими приложениями. Однако не все приложения Windows поддерживают технику OLE. Способные к этому приложения делятся на три группы: OLE- серверы (приложения-источники, родительские приложения) представляют собой приложения, из которых можно встраивать объекты или связывать их с другими приложениями; OLE-клиенты (приложения-приемники) представляют собой приложения, которые могут размещать в своих документах встроенные ими связанные объекты из OLE-серверов. Такие документы называют составными; приложения, которые могут выполнять роль как сервера, так и клиента одновременно. Существуют два варианта использования OLE: установление связи с объектом и внедрение (встраивание) объекта. Основное различие между связыванием и внедрением объектов состоит в способе хранения данных.
При связывании объекта с документом создается ссылка на его файл. Связь работает, пока не перемещен исходный документ, при его перемещении связь разрывается. Ее можно восстановить, но на это уйдет несравнимо больше времени, чем на перемещение файла на прежнее место.
В этом отношении спецификация OLE 1 содержала значительную проблему, поскольку расположение связываемого файла в OLE 1 определялось жесткой ссылкой.
В спецификации OLE 2 используется другой подход. Вместо указания абсолютного пути к файлу применяется относительная ссылка. Внедрение в корне отличается от связывания. При использовании внедрения в составной документ вместо ссылки помещаются данные объекта. Куда бы ни был перемещен документ, внедренные данные всегда с ним. Но и внедрение обладает своими недостатками.
Во-первых, становится мучительным процесс обновления нескольких составных документов, содержащих один и тот же измененный фрагмент.
Во-вторых, для хранения файла с внедренными объектами требуется гораздо больше дискового пространства. При создании связи размер документа, независимо от размера объекта (4 Кб, 400 Кб или 4 Мб), увеличивается всего на несколько десятков байт. При внедрении объекта все его данные копируются в составной документ, поэтому размер документа значительно увеличивается. Кроме того, при внедрении к данным объекта могут быть добавлены вспомогательные данные, которые требуются серверу для выполнения операций с этим объектом.
4. Единственная проблема, связанная с OLE, состоит в том, что эта технология ограничивает свое действие рамками одной локальной машины. К тому же, для решения некоторых задач может потребоваться более тесный контакт приложений с аппаратурой. В таких случаях на помощь приходит технология ActiveX. ActiveX опирается на новые возможности технологии OLE, предоставляемые одной из ее фундаментальных основ — распределенной компонентной моделью объектов ( Distributed Component Object Model — DCOM ). OLE 2 использует в качестве основы для построения составных документов (документов, содержащих другие объекты) более простую технологию — компонентную модель объектов (Component Object Model — СОМ ). Внедрение или связывание объектов с помощью OLE обеспечивает именно СОМ, а DCOM помогает выполнять те же действия, но не только на отдельном компьютере, но и в рамках вычислительной сети. Другими словами, составной документ может состоять из объектов, созданных на различных компьютерах. Элемент управления (компонент ActiveX) не существует внутри приложения, а располагается в отдельном файле. При этом приложение и компонент ActiveX взаимодействуют друг с другом. Программист отслеживает все возможные взаимодействия, устанавливая те или иные свойства компонента или задавая реакцию приложения на некоторые события.
Создание распределенной компонентной модели объектов (DCOM) корпорация Microsoft планировала уже очень давно. Вообще, все преимущества технологии DCOM видны уже из ее названия. "Распределенная" — означает, что используются объекты, расположенные не только на локальном компьютере, но и где-либо в локальной или глобальной сети. "Компонентная" — означает, что программисты могут в полной мере использовать преимущества принципа конструктора Lego, из маленьких кусочков которого способен собрать практически любую вещь. Мы уже рассматривали значение термина объект. Объекты DCOM работают примерно так же, как и любой объект в WINDOWS. Они выполняют определенные задачи по заранее установленным правилам и взаимодействует с другими объектами, используя закрепленный набор интерфейсов. Наконец, слово "модель" означает руководство к действию. Поскольку DCOM определяет спецификацию создания и взаимодействия объектов определенного типа, программисты обязаны придерживаться этой спецификации при создании приложений.
В конечном счете технология DCOM позволяет использовать распределенные вычисления. При этом не нужно беспокоиться о том, где расположены компоненты приложения. DCOM позволяет приложению находить требуемые компоненты и, при необходимости, исполнять все или ряд из них на других компьютерах. При этом использование DCOM подразумевает, что любой компьютер время от времени может исполнять необходимую работу по требованию приложений, запущенных на других компьютерах.
В чем отличие DCOM от OLE или СОМ? Спецификации СОМ и OLE описывают архитектуру объектов. В частности, они определяют, каким образом взаимодействуют объекты на низком уровне. DCOM также решает подобную задачу, и поэтому не сильно отличается от СОМ. Но DCOM, в отличие от СОМ, определяет набор правил, по которым общаются между собой клиент и сервер. Объекты СОМ общаются друг с другом через оперативную память. Объекты DCOM могут устанавливать между собой соединения через вычислительную сеть, модем или линию ISDN. Таким образом, DCOM является расширением СОМ.
В ходе создания DCOM корпорация Microsoft решила сразу несколько проблем. DCOM должна устойчиво работать для сетевых соединений, поэтому были разработаны методы, гарантирующие восстановление состояния объекта после разрыва соединения между клиентом и сервером.
Еще одна проблема — время создания соединения. На локальном компьютере связь объектов происходит практически мгновенно. Объекты, взаимодействующие через вычислительную сеть, могут затратить значительное время для завершения обмена данными. Для решения этой проблемы были разработаны асинхронные способы взаимодействия объектов. Другими словами, работа на локальном компьютере не замирает, пока объекты общаются между собой в фоновом режиме. Это не означает, что пользователь совсем не заметит задержки при взаимодействии с удаленным объектом. Например, если ожидание связано с получением данных объекта, который будет выводиться на печать, то оно может сильно затянуться. Асинхронный характер связи подразумевает лишь, что во время ожидания ответа пользователь может выполнять другую работу.
Еще один важный аспект DCOM — это способ определения объектов, установленных на компьютере. Это невозможно сделать, пока компьютер не опубликует каким-либо образом необходимую информацию. DCOM позволяет открыть часть реестра Windows для использования другими компьютерами.