[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Разделение клиента и сервера

Определение видов сервиса, предоставляемых сервером (общая часть) и
отделение их от клиента (программно-специфичная часть) является
существенным составляющим, которое позволяет использовать
преимущества работы в сети. Это сродни разбиению большой программы
на модули с тем, чтобы лучше управлять ею. Будучи разделенными,
клиенты и серверы могут поставляться на различные компьютеры или
даже выполняться на одном и том же компьютере. Множество клиентов
могут одновременно использовать один и тот же сервер. Серверы могут
использовать сервис других серверов, наподобие того как процедуры
могут вызывать другие процедуры.
В традиционной программе, серверы и клиенты компилируются и
собираются в одну исполняемую программу.
В сетевой среде, клиенты и серверы исполняются как разные процессы
и общаются посредством механизма IPC. Клиент должен создать
логическую связь с сервером перед началом обмена данными.
Вместо того, чтобы передавать параметры процедуре, клиент обязан
теперь вызывать сервис, используя сообщение, содержащее имя сервиса
(аналог имени процедуры) и необходимые параметры. Сервер обязан
послать клиенту результат сервиса в ответном сообщении.
Модель клиент-сервер является более общей, чем механизм вызова
процедур, потому что клиент может потенциально вызвать несколько
видов сервиса перед получением ответного сообщения; а сервер может
направить сообщения, не являющиеся ответными. Для взаимодействия
между клиентом и сервером можно наряду с сообщениями использовать
потоки данных. Например, uucp(1) использует сообщения для настройки
параметров, необходимых для передачи файлов, и поток для
непосредственной передачи собственно данных файла. Во время
взаимодействия роли клиент-сервер могут меняться местами.
Многие прикладные программы для структурирования могут использовать
концептуально простую модель процедурного вызова. Однако сетевой
механизм IPC предоставляет более полный и усложненный контроль
программ над структурой и содержанием их клиент-серверных
взаимодействий.