Вопрос 18
Обработка данных в модели "клиент-сервер". Уровни функций (презентационная логика, бизнес-правила, обработка данных, вспомогательные функции). Модели с "толстым", "тонким" клиентом, модель сервера приложений.
Клиентом называется объект, запрашивающий доступ к службе или ресурсу. Сервер - это объект несущий службу или обладающий ресурсом. Клиент и сервер могут находиться на одной и той же машине (использование локальных механизмов коммуникации) или на двух разных машинах (использование сетевых средств). В рамках нашего исследования,
клиентом и сервером являются два процесса UNIX, связанные между собой через механизм IPC (Interprocess Communication), локальный или сетевой (рис.1.4.).
Рис 1.4. Модель клиент-сервер
Клиент и сервер не играют в данном случае симметричную роль.
Процесс-сервер инициализируется и, затем, переходит в состояние ожидания
запросов от возможных клиентов. Как правило, процесс-клиент запускается в
интерактивном режиме и посылает запросы серверу. Сервер исполняет
полученный запрос, причем это может подразумевать диалог с клиентом, а
может, и нет. Затем сервер вновь переходит в состояние ожидания других
клиентов.
Различают два типа процессов-серверов:
- итеративные серверы: процесс-сервер сам обрабатывает ответ. Этот тип
сервера используется в случае, если время обработки весьма
непродолжительно или если сервер используется единственным клиентом;
- параллельные серверы: процесс-сервер вызывает для обработки вызова
клиента другой процесс. Этот процесс создается системным вызовом fork ().
Порождающий процесс не блокируется по окончании выполнения
порожденного процесса и может, таким образом, ждать другие запросы.
С каждым сервером связан служебный (сервисный) адрес. Клиент
посылает запросы по этому адресу. В зависимости от вида осуществляемой
обработки данных, различают серверы без состояния (stateless) и серверы с
состоянием (statefull). Сервер без состояния не сохраняет о своих клиентах
никакой информации. Сервер с состоянием сохраняет информацию о
состоянии своих клиентов после каждого запроса. В случае разрыва связи,
повторный запуск проще у серверов без состояния, но иногда это может
привести к случайным срабатываниям.
Основной принцип технологии «клиент-сервер» применительно к технологии баз данных заключается в разделении функций стандартного интерактивного приложения на 5 групп:
1. Функции ввода и отображения данных (Presentation Logic);
2. Функции решения задач приложения (Business Logic);
3. Функции обработки данных внутри приложения (Database Logic);
4. Функции управления информационными ресурсами (Database Manager System); (СУБД) (DBMS)
5. Служебные функции (для связывания первых 4-х групп).
Структура типового приложения, работающего с БД представлена на Рис
Существуют 2 способа:
1. Клиент может получать доступ к любому количеству серверов, но лишь к одному в одно и то же время. При этом пользователь должен знать, на какой именно машине, какая часть данных содержится .
2. Клиент может получать доступ к любому количеству серверов одновременно. В этом случае серверы рассматриваются клиентом как один (с логической точки зрения), и пользователь может не знать, на какой именно машине какая часть данных содержится).
Модель «клиент-сервер» с бизнес-логикой на клиенте (толстый клиент)
Здесь БД хранится на сервере и ядро СУБД на сервере (рис.4). На клиенте располагаются презентационная логика и бизнес-логика приложения. Клиент обращается к серверу с запросами на языке SQL.
Преимущества:
Резко уменьшается загрузка сети, так как по ней от клиентов к серверу передаются не запросы на ввод/вывод файлов, а запросы SQL, а их объём существенно ниже. В ответ на запросы клиент получает только данные, релевантные запросу, а не блоки файлов, как в FS-модели.
Недостатки:
• SQL – запросы при интенсивной работе клиентских приложений могут существенно загрузить сеть;
* Дублирование кода приложения при одинаковых запросах для каждого клиентского приложения;
• Сервер в этой модели играет пассивную роль.
Данная модель и предыдущие модели называются моделями с
«толстым клиентом».
модель «клиент-сервера» с бизнес-логикой на сервере
Данную модель поддерживает большинство современных СУБД: Informix, Ingres, SyBase, Oracle, MS SQL Server. Основу данной модели составляет механизм хранимых процедур (ХП) как средство программирования SQL-сервера, механизм триггеров как механизм отслеживания текущего состояния информационного хранилища и механизм ограничений на пользовательские типы данных (рис.5).
В этой модели бизнес-логика разделена между клиентом и сервером. На сервере бизнес-логика реализована в виде хранимых процедур – ХП. Хранимые процедуры это специальные программные модули, которые хранятся в БД и управляются непосредственно из СУБД. Клиент обращается к серверу с командой запуска ХП, а сервер выполняет эту процедуру и регистрирует все изменения в БД. Сервер возвращает клиенту данные, релевантные его запросу. Трафик обмена информацией резко уменьшается. Централизованный контроль выполняется и с использованием механизма триггеров. Триггер в БД является как бы некоторым тумблером, который срабатывает при возникновении определённого события в БД. При возникновении соответствующего события, сервер запускает соответствующий триггер. Триггеры могут вызывать ХП. Для написания ХП и триггеров используется расширение стандартного языка SQL, так называемый, встроенный SQL. Недостаток - большая загрузка сервера. Данную модель называют с «тонким клиентом» в отличие от предыдущих моделей
Модель сервера приложений
Эта модель является расширением двухуровневой модели и в ней вводится дополнительный промежуточный уровень между клиентом и сервером. Этот промежуточный уровень содержит один или несколько серверов приложений
Сервер приложений (СП) составляет новый промежуточный уровень архитектуры. Они спроектированы для исполнения общих не загружаемых функций для клиентов. СП хранят и исполняют наиболее общие правила бизнес-логики, поддерживают каталоги с данными, обеспечивают обмен сообщениями и поддержку запросов. Сервер БД в этой модели занимается исключительно функциями СУБД. Эта модель обладает большей гибкостью. В этой модели большая часть бизнес-логики клиента изолированы от возможностей встроенного SQL, реализованного в конкретной СУБД. Это повышает переносимость системы.
Достоинства
•Высокая производительность.
•Возможность создания системы с массовым параллелизмом.
•Повышенная защищенность.
•Легкость развития и модификации.
•Легкость администрирования.