Как правило компьютеры и программы, входящие в состав информационной системы, не являются равноправными. Некоторые из них владеют ресурсами (файловая система, процессор, принтер, база данных и т.д.), другие имеют возможность обращаться к этим ресурсам. Компьютер (или программу), управляющий ресурсом, называют сервером этого ресурса (файл-сервер, сервер базы данных, вычислительный сервер...). Клиент и сервер какого-либо ресурса могут находится как в рамках одной вычислительной системы, так и на различных компьютерах, связанных сетью.
Основной принцип технологии "клиент-сервер" заключается в разделении функций приложения на три группы:
компонент управления ресурсом
Связь между компонентами осуществляется по определенным правилам, которые называют "протокол взаимодействия".
Исторически первой появилась модель распределенного представления данных, которая
реализовывалась на универсальной ЭВМ с подключенными к ней неинтеллектуальными терминалами.
Управление данными и взаимодействие с пользователем при этом объединялись в одной программе,
на терминал передавалась только "картинка", сформированная на центральном компьютере.
Затем, с появлением персональных компьютеров (ПК) и локальных сетей, были реализованы модели
доступа к удаленной базе данных. Некоторое время базовой для сетей ПК была архитектура
файлового сервера. При этом один из компьютеров является файловым сервером, на клиентах выполняются
приложения, в которых совмещены компонент представления и прикладной компонент (СУБД и
прикладная программма). Протокол обмена при этом представляет набор низкоуровненых вызовов
операций файловой системы. Такая архитектура, реализуемая, как правило, с помощью персональных
СУБД, имеет очевидные недостатки - высокий
сетевой трафик и отсутствие унифицированного доступа к ресурсам.
С появлением первых специализированных серверов баз данных появилась возможность другой
реализации модели доступа к удаленной базе данных. В этом случае ядро СУБД функционирует на сервере,
протокол обмена обеспечивается с помощью языка SQL. Такой подход по сравнению с файловым
сервером ведет к уменьшению загрузки сети и унификации интерфейса "клиент-сервер". Однако,
сетевой трафик остается достаточно высоким, кроме того, по прежнему невозможно удовлетворительное
администрирование приложений, поскольку в одной программе совмещаются различные функции.
Позже была разработана концепция активного сервера, который использовал механизм хранимых
процедур. Это позволило часть прикладного компонента перенести на сервер (модель распределенного
приложения). Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами
и выполняются на том же компьютере, что и SQL-сервер. Преимущества такого подхода: возможно
централизованное администрирование прикладных функций, значительно снижается сетевой трафик
(т.к. передаются не SQL-запросы, а вызовы хранимых процедур). Недостаток - ограниченность
средств разработки хранимых процедур по сравнению с языками общего назначения (C и Pascal).
На практике сейчас обычно используются смешанный подход:
- простейшие прикладные функции выполняются хранимыми процедурами на сервере
- более сложные реализуются на клиенте непосредственно в прикладной программе
Сейчас ряд поставщиков коммерческих СУБД объявило о планах реализации механизмов выполнения
хранимых процедур с использованием языка Java. Это соответствует концепции "тонкого клиента",
функцией которого остается только отображение данных (модель удаленного представления данных).
Литература:
- Г.М.Лодыженский Системы баз данных. Коротко о главном. СУБД.
- Д.Васкевич Стратегии клиент/сервер. Диалектика, Киев, 1997.