BERDAFLEX Software Systems
Главная > Delphi > Использование TClientDataset в двухуровневых приложениях. Часть 2

Секреты Delphi. Использование TClientDataset в двухуровневых приложениях. Часть 2

История переиздания
Издание 1.0 2004.05.05 Сергей Бердачук

На рисунке 1 показана типовая архитектура построения многоуровневых приложений в Delphi (на примере 3-х уровневого приложения).

Рисунок 1. Типовая архитектура многоуровневых приложений

Типовая архитектура многоуровневых приложений

В многоуровневых приложениях используется промежуточный уровень между сервером базы данных и клиентским приложением. Бизнес логика работы с базой данных вынесена в отдельный уровень. В идеале, клиентское приложение не должно зависеть от типа базы данных и методов физического хранения. Данная схема позволяет нескольким различным клиентским приложениям использовать общие “методы” (функции) работы с базой данных. При этом по мере увеличения функциональности приложения увеличивается количество уже отработанных и отлаженных методов, которые можно повторно использовать. Соответственно снижается стоимость новых разработок, уменьшаются сроки на выпуск новых продуктов, и снижается количество возможных ошибок.

Выделенный уровень называется сервером приложений или удаленным брокером запросов.

Компоненты TClientDataset могут связываться с сервером приложений посредством различных компонент, наследующих TCustomRemoteServer, в зависимости от выбранного протокола связи (TCP/IP, HTTP, DCOM, SOAP или CORBA). При соединении с сервером приложений клиенту возвращается описывающий доступные методы интерфейс. Посредством этого же соединения осуществляется связь компонент TClientDataset с провайдерами (TProvider), которые связываются с конкретными компонентами TDataset.

Рассмотрим предложенную Даном Мишером (Dan Miser) в статье “ClientDataset as a Replacement for Cached Updates” архитектуру приложения, показанную на рисунке 2.

Рисунок 2. Архитектура двухуровневого приложения с использованием TClientDataset

Архитектура двухуровневого приложения с использованием TClientDataset

В данном случае сервер приложения временно помещается в клиентское приложение. На практике желательно создать два модуля данных, один для компонент сервера приложений и второй для клиентского приложения. При этом клиентское приложение пишется так, как будто ничего не известно о модуле данных сервера приложений. Связь с данным модулем осуществляется только из клиентского модуля данных, который дублирует и перенаправляет вызовы методов сервера приложений.

Данная технология позволяет получить начальный опыт при построении многоуровневых приложений, а так же упрощает отладку. К тому же, для таких приложений не требуются дополнительные MIDAS лицензии, и мы получаем все преимущества использования компонент TClientDataset без дополнительных затрат.

Продолжение..
Rambler's Top100 Рейтинг@Mail.ru