Системная архитектура клиент-сервер

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

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

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

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

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

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

Средства RPC, в которых, естественно, содержится вся информация о специфике аппаратуры локальной сети и сетевых протоколов, переводит вызов в последовательность сетевых взаимодействий. Тем самым, специфика сетевой среды и протоколов скрыта от прикладного программиста.

При вызове удаленной процедуры программы RPC производят преобразование форматов данных клиента в промежуточные машинно-независимые форматы и затем преобразование в форматы данных сервера. При передаче ответных параметров производятся аналогичные преобразования. Если система реализована на основе стандартного пакета RPC, она может быть легко перенесена в любую открытую среду. Технология клиент-сервер применительно к СУБД сводится к разделению системы на две части приложение-клиент front-end и сервер базы данных back-end. Эта архитектура совмещает лучшие черты обработки данных на мэйнфреймах и технологии файл-сервер.

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

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

Особенности обработки данных в различных архитектурах показаны на рис.1. Рис.1. Обработка данных в различных архитектурах Локальный компьютер Локальное приложение СУБД Данные Архитектура файл-сервер Клиент Файл-сервер Сетевое приложение Данные СУБД Клиент пересылка Сетевое приложение данных СУБД Архитектура клиент-сервер Сервер БД Клиентское СУБД приложение Данные Клиентское приложение пересылка запросов и результатов 1.4. Серверы баз данных Термин сервер баз данных обычно используют для обозначения всей СУБД, основанной на архитектуре клиент-сервер, включая и серверную, и клиентскую части.

Такие системы предназначены для хранения и обеспечения доступа к базам данных. Хотя обычно одна база данных целиком хранится в одном узле сети и поддерживается одним сервером, серверы баз данных представляют собой простое и дешевое приближение к распределенным базам данных, поскольку общая база данных доступна для всех пользователей локальной сети. 1.5.