История переиздания | ||
---|---|---|
Издание 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
В данном случае сервер приложения временно помещается в клиентское приложение. На практике желательно создать два модуля данных, один для компонент сервера приложений и второй для клиентского приложения. При этом клиентское приложение пишется так, как будто ничего не известно о модуле данных сервера приложений. Связь с данным модулем осуществляется только из клиентского модуля данных, который дублирует и перенаправляет вызовы методов сервера приложений.
Данная технология позволяет получить начальный опыт при построении многоуровневых приложений, а так же упрощает отладку. К тому же, для таких приложений не требуются дополнительные MIDAS лицензии, и мы получаем все преимущества использования компонент TClientDataset без дополнительных затрат.
Продолжение..