Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

         

Архитектура "клиент-сервер"


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

Прежде всего, определимся с терминологией.

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

Клиент посылает серверу запрос на получение данных или выполнение какой-либо работы (рис. 3.1). Это может быть запрос к серверу базы данных, задание серверу резервного копирования дисков или что-то аналогичное.

Рис. 3.1. Взаимодействие между клиентом и сервером

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

Процесс передачи запроса серверу мы будем называть транзакцией.

Строго говоря, транзакция - это совокупность трех действий: посылка запроса, выполнение запроса, прием ответа.

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

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

Топология системы, имеющей архитектуру "клиент-сервер", может быть различной.


На рис. 3. 1 показана система, состоящая из одного клиента и одного сервера. Однако в системе может быть несколько клиентов, работающих с одним сервером (рис. 3.2), или несколько клиентов, работающих одновременно с несколькими серверами (рис. 3.3).



Рис. 3.2. Система с одним сервером и несколькими клиентами

Обратите внимание на пунктирную линию, соединяющую серверы на рис.3.3. Между серверами тоже может идти обмен транзакциями. Таким образом, любой процесс может выступать одновременно и клиентом, и сервером.



Рис. 3.3. Система с двумя серверами и несколькими клиентами

Очень хорошо, скажете вы, но причем тут DDE?

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

Библиотека DDEML позволяет создавать системы, имеющие различные топологии. В среде Windows версии 3.1 в качестве клиентов и серверов могут выступать приложения, работающие на одном компьютере. В локальной сети, созданной на базе операционных систем Windows for Workgroups и Windows NT, клиентами и серверами могут быть приложения, работающие на разных компьютерах.

В нашей книге мы не будем рассматривать сетевую передачу данных через Network DDE, так как этот материал заслуживает отдельного и более глубокого изучения. Из-за ограниченного объема книги мы подробно рассмотрим только простейший, но часто встречающийся случай - когда в системе есть только один клиент и один сервер. Более того, мы ограничимся одним вариантом взаимодействия клиента и сервера, при котором инициатором передачи данных является клиент. Полное описание библиотеки DDEML вы сможете найти в документации, которая поставляется вместе с SDK for Windows 3.1.


Содержание раздела