Вопрос 7. Технологии обмена данными между приложениями Windows

С первых дней существования компьютеров обозначились трудности, связанные с переносом данных между различными машинами. Непереносимость данных, вызванная разницей в платформах, сейчас практически преодолена за счет внедрения общих стандартов представления данных и наличия программ-перекодировщиков. До сих пор сохраняется проблема непереносимости данных внутри одного компьютера, между разными программами, создающими разные или даже одинаковые виды документов, но в различных форматах внутреннего представления.

Операционная система Windows изначально ориентирована на высокую степень интеграции ее компонентов, важнейшим элементом которой является возможность эффективного обмена данными между различными приложениями. Для этих целей реализовано несколько технологий, которые мы рассмотрим.

Буфер промежуточного хранения Clipboard

Уже в первых версиях Windows был реализован встроенный буфер промежуточного хранения данных Clipboard (буфер обмена), который постоянно активен и доступен всем Windows-приложениям. Обмен данными через буфер обмена осуществляется следующим образом.

1. Выделить в приложении-источнике фрагмент данных.

2. Скопировать (перенести) выделенный фрагмент в буфер обмена командой Правка►КопироватьилиПравка►Вырезать.

3. Перейти к приложению-приемнику, поместить курсор в то место, куда требуется вставить данные из буфера, и выполнить команду Правка►Вставить.

Аналогичный порядок действий обеспечивает обмен данными и в рамках одного приложения, поэтому отпадает необходимость включать в приложения внутренние средства копирования и перемещения объектов.

За счет использования обмена данными через буфер возможно включение в один документ объектов, созданных различными приложениями, – создание, так называемых, составных документов. Для всех Windows-приложений установлен ряд стандартных форматов представления данных, и при операциях с буфером обмена преобразования данных для этих форматов выполняются автоматически и совершенно незаметно для пользователя.

Для непосредственного просмотра данных в буфере обмена, изменения формата представления данных в нем, записи содержимого буфера в файл и его очистки используется утилита Clipboard Viewer (Clipbrd), которая является компонентой операционной системы и устанавливается при ее инсталляции.

Недостатками обмена с использованием буфера являются:

· некоторое ограничение объема передаваемой через буфер информации;

· данные, вставленные в документ-приемник через буфер обмена, не обновляются при их изменении в документе-источнике.

Технология DDE

Для обмена данными между приложениями может использоваться технология DDE (Dynamic Data Exchange – динамический обмен данными). Суть технологии состоит в том, что вставляемый через буфер обмена объект сохраняет свою связь с оригиналом и при внесении в него изменений может автоматически обновляться. При этом 1) с одним оригиналом можно связать любое число документов; 2) возможно связывание по цепочке, когда источником является не оригинал, а ранее связанный объект; 3) установленная связь сохраняется и после закрытия приложений, т.е. внесенные в оригинал изменения автоматически вносятся во все документы, связанные с ним.

Для использования технологии DDE следует обычным путем скопировать объект из документа приложения-сервера в буфер обмена, перейти в приложение-клиент, а затем по команде ПравкаСпециальная вставка► переключательСвязьвставить его в документ.

Команда ПравкаСвязи позволяет, просмотреть все связи для данного документа, разорвать или переключить связь с одного объекта на другой или установить режим ручной активации связей, когда обновление информации в документе с изменением оригинала происходит не автоматически, а при выполнении соответствующей команды.

Однако, технология DDE не нашла широкого распространения, поскольку при всех достоинствах динамического обмена данными сложность его функционирования привела к тому, что пользователи предпочитали вставку объектов через буфер обмена из-за ее простоты и понятности.

При обмене данными по рассмотренным технологиям объектом является любой фрагмент, переносимый из одного приложения в другое. На самом же деле переносился не сам фрагмент, а лишь его «экранный образ»: приложение-источник преобразовывает данные из своего внутреннего формата в один из стандартов Windows, и в таком виде фрагмент вставляется в приложение-приемник. Вставленный объект является составным элементом документа, в котором он отображается, но внести в него изменения довольно трудно, т.к. для этого требуется приложение-источник.

ТехнологияOLE

Технология связывания и внедрения объектов (Object Linking and Embedding) имеет больше функциональных возможностей, причем, если приложение поддерживаетOLE, то оно само выполняет обмен данными по этой технологии.

Операции связывания (Linking) и внедрения (Embedding), реализованные в рамках OLE, внешне напоминают технологию DDE и обмен данными через буфер обмена. При работе по технологии OLE выполняется та же последовательность действий. Документ со встроенными OLE-объектами выглядит аналогично документу с фрагментами, вставленными через буфер обмена. Однако в этом случае при двойном щелчке мыши в поле объекта он активизируется и запускается приложение, в котором создавался этот объект, и в него передается объект для редактирования или выполнения других операций. После окончания работы с объектом программа-источник закрывается, а измененный объект автоматически передается обратно в документ приложения-клиента.

В рамках технологии OLE объект представляет собой сочетание данных какого-либо вида (текст, графика, видео, звук и др.) во внутреннем формате приложения-сервера, представленном в одном из стандартных форматов Windows, и информации о создавшей его программе, размере, времени создания и т.п. Таким образом, объект является законченной структурой, переносимой из одного документа в другой и сохраняющей отличительные особенности независимо от типа документа, в котором в данный момент находится.

При связывании:

· отсутствует необходимость создания второй копии объекта, что позволяет сократить требуемый объем дискового пространства;

· внесение изменений в связанный объект обеспечивает дублирование этих изменений во всех документах, с которыми объект был связан;

· запоминается путь к оригиналу, поэтому при переносе на другую машину необходимо переписать все файлы, содержащие объекты, включенные в данный документ.

При внедрении:

· изменения вставленного объекта, не отражаются в оригинале;

· вся информация хранится в одном файле и никаких проблем при переносе на другой компьютер не возникает.

В рамках OLE реализован метод drag-and-drop (перетащить и бросить), который обеспечивает наглядность процесса обмена данными, и его можно применять вместо операции копирования через буфер обмена даже при межоконном перемещении объектов и их частей.

OLE обеспечивает возможность местной активизации объекта – при двойном щелчке мышью объект обводится широкой штриховой рамкой, обозначающей активность, и остается на месте. Заголовок окна меняется на заголовок вызываемого приложения, а меню представляет собой комбинацию из меню приложения-источника и приложения-приемника. После выполнения операций (чаще всего, редактирования) над объектом возврат в первоначальное состояние осуществляется по щелчку мышью за пределами объекта.

Приложение-сервер и приложение-клиент обмениваются данными по наиболее новой технологии, доступной им обоим, т.е., если приложение-источник поддерживает только DDE, при работе в OLE объект будет вставлен, но возможность его активации из документа-приемника теряется.

OLE-технология, разработанная корпорацией Microsoft, обеспечивает:

· привязку – возможность вызова одной программы из другой;

· встраивание – помещение объектов, созданных в одном приложении, в документ другого.