|
Структура многозвенного приложения в Delphi
Многозвенная архитектура приложений
баз данных вызвана к жизни необходимостью обрабатывать
на стороне сервера запросы от большого числа удаленных
клиентов. Казалось бы, с этой задачей вполне могут справиться
и приложения клиент/сервер, основные элементы которых
представлены в части III.
Однако в этом случае при большом числе
клиентов вся вычислительная нагрузка ложится на сервер
БД, который обладает довольно скудным набором средств
для реализации сложной бизнес-логики (хранимые процедуры,
триггеры, просмотры и т. д.). И разработчики вынуждены
существенно усложнять программный код клиентского ПО,
а это крайне нежелательно при наличии большого Числа
удаленных клиентских компьютеров. Ведь с усложнением
клиентского ПО возрастает вероятность ошибок и усложняется
его обслуживание.
Многозвенная архитектура приложений
БД призвана исправить перечисленные недостатки.
Итак, в рамках этой архитектуры "тонкие"
клиенты представляют собой простейшие приложения, обеспечивающие
лишь передачу данных, их локальное кэширование, представление
средствами пользовательского интерфейса, редактирование
и простейшую обработку.
Клиентские приложения обращаются не
к серверу БД напрямую, а к специализированному ПО промежуточного
слоя. Это может быть и одно звено (простейшая трехзвенная
модель) и более сложная структура.
ПО промежуточного слоя называется сервером
приложений, принимает запросы клиентов, обрабатывает
их в соответствии с запрограммированными правилами бизнес-логики,
при необходимости преобразует в форму, удобную для сервера
БД и отправляет серверу.
Сервер БД выполняет полученные запросы
и отправляет результаты серверу приложений, который
адресует данные клиентам.
Рис. 20.1. Многозвенная
архитектура приложений БД
Таким образом, многозвенное приложение
БД состоит из (рис. 20.1):
- "тонких" клиентских
приложений, обеспечивающих лишь передачу, представление,
редактирование и простейшую обработку данных;
- одного или нескольких звеньев
ПО промежуточного слоя (сервер приложений), которые
могут функционировать как на одном компьютере, так
и распределенно — в локальной сети;
- сервера БД (Oralce, Sybase,
MS SQL, InterBase и т. д.), поддерживающего функционирование
базы данных и обрабатывающего запросы.
Более простая трехзвенная модель содержит
следующие элементы:
- "тонкие" клиенты;
- сервер приложений;
- сервер БД.
Далее мы будем рассматривать именно
трехзвенную модель. В среде разработки Delphi имеется
набор инструментов и компонентов для создания клиентского
ПО и ПО промежуточного слоя. Серверная часть — сервер
приложений описывается в гл. 21, вопросы создания клиентского
ПО — в гл. 22.
Сервер приложений взаимодействует с
сервером БД, используя одну из технологий доступа к
данным, реализованным в Delphi (см. часть IV). Это технологии
ADO, BDE, InterBase Express и dbExpress. Разработчик
может выбрать наиболее подходящую, исходя из поставленной
задачи и параметров сервера БД.
Удаленные клиентские приложения создаются
с использованием специального набора компонентов, объединенных
общим названием DataSnap. Эти компоненты инкапсулируют
стандартные транспорты (DCOM, HTTP, сокеты) и обеспечивают
соединение удаленного клиентского приложения с сервером
приложения. Также компоненты DataSnap обеспечивают доступ
клиента к функциям сервера приложений за счет использования
интерфейса AppServer (см. гл.
21).
Важную роль при разработке клиентских
приложений играет компонент, инкапсулирующий клиентский
набор данных. Его реализации также зависят от технологий
доступа к данным и рассматриваются в гл. 22.
Наряду с перечисленными выше преимуществами,
наличие дополнительного звена — сервера приложений —
дает некоторые дополнительные бонусы, которые могут
быть весьма существенным подспорьем с точки зрения повышения
надежности и эффективности системы.
Так как зачастую клиентские компьютеры
— это достаточно слабые машины, реализация сложной бизнес-логики
на сторону сервера позволяет существенно повысить быстродействие
системы в целом. И не только за счет более мощной техники,
но и за счет оптимизации выполнения однородных запросов
пользователей.
Например, при чрезмерной загрузке сервера,
сервер приложений может самостоятельно обрабатывать
запросы пользователей (ставить их в очередь или отменять)
без дополнительной загрузки сервера БД.
Наличие сервера приложений повышает
безопасность системы, т. к. вы можете организовать здесь
авторизацию пользователей, да и любые другие функции
безопасности без прямого доступа к данным.
Кроме того, вы легко сможете использовать
защищенные каналы передачи данных, например HTTPS.
|