Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспектлекцийАсоиу_до2012.doc
Скачиваний:
105
Добавлен:
11.02.2015
Размер:
1.79 Mб
Скачать

5. Динамический обмен данными (dde)

Рассмотренный ранее способ обмена данными через буфер clipboard идеально подходит для операций копирования, управляемых пользователем. В то же время для автоматического обмена данными между программами (по инициативе программ) в Windows предусмотрен специальный механизм - про­токол динамического обмена данными DDE (Dynamic Data Exchange) [8,10].

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

При организации совместного использования данных возникают сле­дующие проблемы:

  • чтобы программы, потребляющие данные, могли обнаружить и устано­вить связь с программами, поставляющими эти данные, необходима система имен;

  • данные должны быть разделяемыми. Windows изолирует программы от взаимного влияния друг на друга, строго разграничивая занимаемую ими па­мять. Очевидно, что передача некоторого блока данных между двумя програм­мами предполагает выделение сегмента глобальной памяти, доступ к которому был бы возможен со стороны обеих программ;

  • доступ к данным должен быть упорядоченным. Так как сразу несколько программ могут читать и изменять данные, отсутствие согласованности в их действиях может привести к нарушению целостности данных. Поэтому нужен механизм синхронизации доступа, а также своевременного уведомления про­грамм о каждом изменении данных.

DDE-протокол решает все перечисленные проблемы. В соответствии с принципом "клиент-сервер" обмен данными всегда осуществляется между сер­вером - программой, которая владеет данными, и клиентом - программой, кото­рая их использует. Инициатором обмена является клиент, который устанавли­вает соединение с сервером и таким образом получает возможность запраши­вать у сервера данные. Запрос данных называется транзакцией. Сервер реагиру­ет на запрос клиента, посылая ему данные. Когда клиент больше не нуждается в услугах сервера, он разрывает соединение.

Для доступа к данным сервера используется трехуровневая иерархиче­ская система именования, которая включает: имя службы (service name), имя темы (topic name) и имя элемента данных (item name).

Имя службы - это идентификатор, по которому клиент отыскивает нуж­ный сервер при установке с ним соединения. Обычно один сервер поддержива­ет только одну службу, имя которой совпадает с именем его программы. Имя службы сервер сообщает Windows при запуске.

Имя темы - это контекст данных в рамках службы. Для сервера, который хранит свои данные на диске, это может быть имя файла. Имя темы вместе с именем службы указывается клиентом при запросе. Сервер проверяет, сущест­вует ли такая тема, и разрешает соединение.

Имя элемента данных - это идентификатор информационной единицы обмена между клиентом и сервером. Он сообщается клиентом непосредственно в момент выполнения транзакции и указывает, какие именно данные клиент желает получить или передать. Информационной единицей может быть число, строка, запись, растровое изображение.