Полное руководство: что такое динамический обмен данными?

8 апреля 2022 г.

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

Что такое протокол динамического обмена данными?

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

Как работает динамический обмен данными?

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

Как использовать динамический обмен данными с Windows

Вот шесть шагов для использования динамического обмена данными с Windows:

1. Начало разговора

Первым шагом к реализации DDE является запуск диалога между двумя приложениями. Для этого вы программируете систему, которая является клиентом, для отправки сообщения “WM_DDE_INITIATE”. Настройте клиента на широковещательную передачу этого сообщения, используя «SendMessage» в качестве первого параметра. Как только вы это сделаете, клиент подготовится к приложению и названию темы, вызвав «GlobalAddAtom». Вы можете настроить клиента на запрос бесед с любым серверным приложением или темой, используя атомы «NULL». Как только вызов «SendMessage» возвращается, клиент удаляет глобальные атомы.

2. Получение элемента

После запуска диалога DDE клиент может получить данные с сервера с помощью сообщения «WM_DDE-REQUEST». Для этого вы отправляете сообщение и указываете, какой элемент и формат вы хотели бы получить. При выполнении этого метода сервер обычно удаляет атом элемента. В некоторых ситуациях это не работает, и вместо этого клиент удаляет атом. Сервер может отображать элемент в запрошенном формате, если у него есть доступ к элементу, что позволяет серверу копировать элементы как объект общей памяти. Это позволяет вам получить элемент с сервера.

3. Отправка товара

Другой способ передачи одного элемента — отправка данных на сервер. Вы можете добиться этого, отправив сообщение «WM_DDE_POKE». При этом клиент визуализирует данные и отправляет сообщение «WM_DDE_POKE». Это сообщение похоже на сообщение “WM_DDE_DATA”. Однако клиент отправляет серверу сообщение «WM_DDE_POKE».

Когда сервер принимает данные от клиентов, он анализирует информацию. Если он принимает данные надлежащим образом, сервер отправляет клиентам положительное сообщение «WM_DDE_ACK». Если сервер не может проанализировать данные, он отправляет клиенту отрицательное сообщение «WM_DDE_ACK». Когда это происходит, клиент должен освободить память, отправив сообщение «WM_DDE_POKE» с отрицательным подтверждением.

4. Установка постоянного канала передачи данных

Затем установите постоянную ссылку на данные, которые вы передаете в серверное приложение. Как только вы установите эту ссылку, сервер создает повторяющиеся обновления ссылки на клиент. Обычно сервер отправляет эти обновления при изменении данных. После того как вы установили постоянный канал передачи данных, поток данных остается на месте до тех пор, пока вы его не отключите. Чтобы установить канал передачи данных, попросите вашего клиента отправить сообщение “WM_DDE_ADVISE”. После того, как сервер примет это сообщение, он отправляет клиенту положительное сообщение «WM_DDE_ACL». Теперь сервер отправляет новые данные клиенту каждый раз, когда данные изменяются.

5. Завершение команд

Вы можете использовать DDE для выполнения различных команд между двумя приложениями. Для этого программы посылают сообщение “WM_DDE_EXECUTE”. Это сообщение должно содержать рекомендацию, которую вы хотите реализовать. Как только устройство завершает команду, сервер отправляет клиенту положительное сообщение «WM_DDE_ACK». Если это не удается, сервер отправляет отрицательное сообщение. Как правило, вы отправляете только одну команду за раз, то есть вы отправляете сообщение только после того, как выполните первую команду. Это помогает каждой команде работать правильно.

6. Удаление разговора

Как только вы закончите протокол DDE, вы можете удалить диалог между сервером и клиентом. Просто попросите сервер или клиент отправить сообщение “WM_DDE_TERMINATE”. Вы можете сделать это в любое время, если оба приложения готовы принять сообщение о завершении. Это помогает процессу работать эффективно без ошибок. Важно, чтобы вы удалили все диалоги программ, прежде чем выключать системы. Это гарантирует отсутствие ошибок при работе с протоколом DDE. Когда приложение готово к удалению, оно завершает диалоги DDE перед обработкой сообщения «WM_DESTROY».

Обратите внимание, что ни одна из компаний, упомянутых в этой статье, не связана с компанией Indeed.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *