Структура многозвенного приложения в 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.
|