В том смысле, в котором термин клиент/сервер вошел в употребление, системы клиент/сервер характеризуются тем, что экранная форма, или клиент, и база данных, или сервер, как правило, находятся на разных компьютерах. Клиент и сервер могут быть соединены локальной вычислительной сетью (ЛВС) с высокой скоростью передачи данных и высокой пропускной способностью или глобальной вычислительной сетью (ГВС), которая работает гораздо медленнее и имеет более низкую пропускную способность.
Ключом к качественному проектированию системы клиент/сервер является такое распределение функций по обработке данных между компьютером-клиентом и компьютером-сервером, при котором число операций обмена между ними (число пар сообщений) минимально. Вторая задача — минимизация размеров сообщений. Если следовать этим критериям, то клиент и сервер, как правило, будут работать с максимальной эффективностью. Клиент представляет данные в удобной для пользователя форме, а сервер своевременно отвечает на запросы данных и обеспечивает целостность данных.
Выполняя проектирование процедур, мы должны определить, где они должны располагаться: на клиенте, сервере или и на клиенте, и на сервере. В отдельных случаях наилучший результат достигается при разбиении процедуры между клиентом и сервером, а некоторые процедуры можно реализовать в двух экземплярах — на клиенте и на сервере. В общем случае на клиенте следует размещать только процедуры управления пользовательским интерфейсом, а всю логику приложений и обработки данных нужно выполнять на сервере. Неверные решения при размещении процедур обработки могут серьезно повлиять на производительность и удобство эксплуатации системы.
Переходя к трехуровневым архитектурам, мы рассчитываем найти логику представления данных на клиенте, прикладную логику — на среднем уровне, а логику обработки данных — на сервере данных. Архитектура NCA (Network Computing Architecture), предложенная корпорацией Oracle, делает трехуровневые, а по сути дела n-уровневые, приложения более доступными для проектировщиков. (Подробнее об NCA вы узнаете в разделе "Версия 7.3".)
Давайте вернемся к примеру с прокатом автомобилей. Наши пользователи будут работать с приложением клиент/сервер на ПК. Для них важна возможность быстрой обработки процедуры возврата автомобилей, так как часто клиент спешит, например опаздывает на самолет. Мы решили спроектировать процедуру расчета с клиентом так, чтобы при вводе номера документа на право проката вся информация, необходимая для завершения транзакции, загружалась с сервера на ПК и хранилась локально. Она не обязательно должна появляться на экране вся сразу (и загромождать экран), а будет храниться в памяти ПК или на его локальном диске. После завершения транзакции на сервер отправляются только новые и измененные данные. Говоря языком Oracle, на сервере будет пакет хранимых процедур, обрабатывающий запросы клиента; клиенту никогда не понадобится непосредственно обращаться к таблицам Oracle на сервере.






