Секреты Delphi. Использование TClientDataset в двухуровневых приложениях. Часть 2
Секреты Delphi. Использование TClientDataset
в двухуровневых приложениях. Часть 2
Часть 1 см. в КГ №17
На рис. 1 показана типовая архитектура построения многоуровневых приложений в Delphi (на примере трехуровневого приложения).
В многоуровневых приложениях используется промежуточный уровень между сервером базы данных и клиентским приложением. Бизнес-логика работы с базой данных вынесена в отдельный уровень.
В идеале клиентское приложение не должно зависеть от типа базы данных и методов физического хранения. Данная схема позволяет нескольким различным клиентским приложениям использовать общие методы (функции) работы с базой данных.
При этом по мере увеличения функциональности приложения увеличивается количество уже отработанных и отлаженных методов, которые можно повторно использовать. Соответственно снижается стоимость новых разработок, уменьшаются сроки на выпуск новых продуктов и снижается количество возможных ошибок.
Выделенный уровень называется сервером приложений, или удаленным брокером запросов.
Компоненты TClientDataset могут связываться с сервером приложений посредством различных компонент, наследующих TCustomRemoteServer, в зависимости от выбранного протокола связи (TCP/IP, HTTP, DCOM, SOAP или CORBA). При соединении с сервером приложений клиенту возвращается описывающий доступные методы интерфейс. Посредством этого же соединения осуществляется связь компонент TClientDataset с провайдерами (TProvider), которые связываются с конкретными компонентами TDataset.
Рассмотрим предложенную Даном Мишером (Dan Miser) в статье "ClientDataset as a Replacement for Cached Updates" архитектуру приложения, показанную на рис. 2.
В данном случае сервер приложения временно помещается в клиентское приложение. На практике желательно создать два модуля данных: один для компонент сервера приложений и второй для клиентского приложения. При этом клиентское приложение пишется так, как будто о модуле данных сервера приложений ничего не известно.
Связь с данным модулем осуществляется только из клиентского модуля данных, который дублирует и перенаправляет вызовы методов сервера приложений.
Данная технология позволяет получить начальный опыт при построении многоуровневых приложений, а также упрощает отладку. К тому же, для таких приложений не требуются дополнительные MIDAS-лицензии, и мы получаем все преимущества использования компонент TClientDataset без дополнительных затрат.
Продолжение следует.
Сергей Бердачук, Berdachuk@tut.by
http://berdachuk.at.tut.by
в двухуровневых приложениях. Часть 2
Часть 1 см. в КГ №17
На рис. 1 показана типовая архитектура построения многоуровневых приложений в Delphi (на примере трехуровневого приложения).
В многоуровневых приложениях используется промежуточный уровень между сервером базы данных и клиентским приложением. Бизнес-логика работы с базой данных вынесена в отдельный уровень.
В идеале клиентское приложение не должно зависеть от типа базы данных и методов физического хранения. Данная схема позволяет нескольким различным клиентским приложениям использовать общие методы (функции) работы с базой данных.
При этом по мере увеличения функциональности приложения увеличивается количество уже отработанных и отлаженных методов, которые можно повторно использовать. Соответственно снижается стоимость новых разработок, уменьшаются сроки на выпуск новых продуктов и снижается количество возможных ошибок.
Выделенный уровень называется сервером приложений, или удаленным брокером запросов.
Компоненты TClientDataset могут связываться с сервером приложений посредством различных компонент, наследующих TCustomRemoteServer, в зависимости от выбранного протокола связи (TCP/IP, HTTP, DCOM, SOAP или CORBA). При соединении с сервером приложений клиенту возвращается описывающий доступные методы интерфейс. Посредством этого же соединения осуществляется связь компонент TClientDataset с провайдерами (TProvider), которые связываются с конкретными компонентами TDataset.
Рассмотрим предложенную Даном Мишером (Dan Miser) в статье "ClientDataset as a Replacement for Cached Updates" архитектуру приложения, показанную на рис. 2.
В данном случае сервер приложения временно помещается в клиентское приложение. На практике желательно создать два модуля данных: один для компонент сервера приложений и второй для клиентского приложения. При этом клиентское приложение пишется так, как будто о модуле данных сервера приложений ничего не известно.
Связь с данным модулем осуществляется только из клиентского модуля данных, который дублирует и перенаправляет вызовы методов сервера приложений.
Данная технология позволяет получить начальный опыт при построении многоуровневых приложений, а также упрощает отладку. К тому же, для таких приложений не требуются дополнительные MIDAS-лицензии, и мы получаем все преимущества использования компонент TClientDataset без дополнительных затрат.
Продолжение следует.
Сергей Бердачук, Berdachuk@tut.by
http://berdachuk.at.tut.by
Компьютерная газета. Статья была опубликована в номере 19 за 2004 год в рубрике программирование :: delphi