Вычислительная
модель «клиент—сервер» исходно связана с парадигмой открытых систем,
которая появилась в 90-х годах и быстро эволюционировала. Сам термин «клиент-сервер»
исходно применялся к архитектуре программного обеспечения, которое описывало
распределение процесса выполнения по принципу взаимодействия двух программных
процессов, один из которых в этой модели назывался «клиентом», а
другой — «сервером». Клиентский процесс запрашивал некоторые услуги,
а серверный процесс обеспечивал их выполнение. При этом предполагалось, что
один серверный процесс может обслужить множество клиентских процессов.
Ранее приложение
(пользовательская программа) не разделялась на части, оно выполнялось некоторым
монолитным блоком. Но возникла идея более рационального использования ресурсов
сети. Действительно, при монолитном исполнении используются ресурсы только одного
компьютера, а остальные компьютеры в сети рассматриваются как терминалы. Но
теперь, в отличие от эпохи main-фреймов, все компьютеры в сети обладают собственными
ресурсами, и разумно так распределить нагрузку на них, чтобы максимальным образом
использовать их ресурсы.
И как в промышленности,
здесь возникает древняя как мир идея распределения обязанностей, разделения
труда. Конвейеры Форда сделали в свое время прорыв в автомобильной промышленности,
показав наивысшую производительность труда именно из-за того, что весь процесс
сборки был разбит на мелкие и максимально простые операции и каждый рабочий
специализировался на выполнении только одной операции, но эту операцию он выполнял
максимально быстро и качественно.
Конечно,
в вычислительной технике нельзя было напрямую использовать технологию автомобильного
или любого другого механического производства, но идею использовать было можно.
Однако для воплощения идеи необходимо было разработать модель разбиения единого
монолитного приложения на отдельные части и определить принципы взаимосвязи
между этими частями.
Основной
принцип технологии «клиент—сервер» применительно к технологии баз
данных заключается в разделении функций стандартного интерактивного приложения
на 5 групп, имеющих различную природу:
Структура
типового приложения, работающего с базой данных приведена на рис. 10.2.
Рис.
10.2. Структура типового интерактивного приложения, работающего с
базой данных
Презентационная
логика (Presentation Logic) как часть приложения определяется тем, что пользователь
видит на своем экране, когда работает приложение. Сюда относятся все интерфейсные
экранные формы, которые пользователь видит или заполняет в ходе работы приложения,
к этой же части относится все то, что выводится пользователю на экран как результаты
решения некоторых промежуточных задач либо как справочная информация. Поэтому
основными задачами презентационной логики являются:
Некоторые
возможности для организации презентационной логики приложений предоставляет
знако-ориентированный пользовательский интерфейс, задаваемый моделями CICS (Customer
Control Information System ) и IMS/DC фирмы IBM и моделью TSO (Time Sharing
Option) для централизованной main-фреймовой архитектуры. Модель GUI — графического
пользовательского интерфейса, поддерживается в операционных средах Microsoft's
Windows, Windows NT, в OS/2 Presentation Manager, X-Windows и OSF/Motif.
Бизнес-логика,
или логика собственно приложений (Business processing Logic), — это часть кода
приложения, которая определяет собственно алгоритмы решения конкретных задач
приложения. Обычно этот код пишется с использованием различных языков программирования,
таких как С, C++, Cobol, SmallTalk, Visual-Basic.
Логика обработки
данных (Data manipulation Logic) — это часть кода приложения, которая связана
с обработкой данных внутри приложения. Данными управляет собственно СУБД (DBMS).
Для обеспечения доступа к данным используются язык запросов и средства манипулирования
данными стандартного языка SQL
Обычно операторы
языка SQL встраиваются в языки 3-го или 4-го поколения (3GL, 4GL), которые используются
для написания кода приложения.
Процессор
управления данными (Database Manager System Processing) — это собственно СУБД,
которая обеспечивает хранение и управление базами данных. В идеале функции СУБД
должны быть скрыты от бизнес-логики приложения, однако для рассмотрения архитектуры
приложения нам надо их выделить в отдельную часть приложения.
В централизованной
архитектуре (Host-based processing) эти части приложения располагаются в единой
среде и комбинируются внутри одной исполняемой программы.
В децентрализованной
архитектуре эти задачи могут быть по-разному распределены между серверным и
клиентским процессами. В зависимости от характера распределения можно выделить
следующие модели распределений (см. рис. 10.3):
Рис.
10.3. Распределение функций приложения в моделях «клиент—сервер»
Эта условная
классификация показывет, как могут быть распределены отдельные задачи между
серверным и клиенскими процессами. В этой классификации отсутствует реализация
удаленной бизнес-логики. Действительно, считается, что она не может быть удалена
сама по себе полностью. Считается, что она может быть распределена между разными
процессами, которые в общем-то могут выполняться на разных платформах, но должны
корректно кооперироваться (взаимодействовать) друг с другом.