Создание трехуровневых информационных систем с помощью Delphi 4.

Крылов Евгений


Необходимость перехода от двухуровневой, ставшей уже классической, архитектуры "клиент-сервер" к трехуровневой прежде всего обусловлена стремлением снизить стоимость владения информационной сиcтемой, которая складывается из стоимости оборудования , программного обеспечения и затрат на эксплуатацию.В настоящее время по данным аналитиков Gartner Group в среднем по США стоимость владения на одно рабочее место составляет 8000$ в год.
Подробный анализ издержек, повышающих стоимость владения является предметом отдельной статьи и мы лишь вкратце коснемся тех из них, которые лежат на поверхности.
1.Все предприятия, независимо от их размера, несут затраты, во-первых, связанные с конфигурированием рабочих станций (установка и настройка клиентской части серверной СУБД, замена версий автоматизированных рабочих мест) и поддержкой их в рабочем состоянии, и, во вторую очередь - связанные с обеспечением необходимого сетевого трафика и повышения надежности эксплуатации системы в целом.
2. Крупные предриятия вынуждены идти на дополнительные затраты , в частности, обусловленные проблемами в организации централизованного хранения и обработки данных в крупных, распределенных по большой территории предприятиях. Зачастую такие предприятия имеют несколько локальных информационных систем и, как следствие, набор связанных с этим проблем: поддержка актуальности данных в локальных информационных системах, репликация данных, объединение данных из нескольких информационных систем для их совместного анализа и составления итоговых сводок и отчетов.
Решение этих и подобных проблем возможно путем введения дополнительного слоя между клиентской программой и сервером базы данных с целью разгрузки как клиента, так и сервера, то есть переходом от двухуровневой структуры к трехуровневой.Сответственно меняется и подход к созданию программного обеспечения.
Что такое многоуровневое приложение ?
Клиент- серверная архитектура часто определяется как приложение, распределенное между клиентским и серверным компьютером, которые объединены в сеть. На самом же деле- главное в клиент- серверной архитектуре- это то, что производится прежде всего разделение на уровне логики, а разделение физическое- это лишь следствие. В двухуровневом подходе прикладная логика(бизнес- логика) четко отделяется от системной, такой как логика сервера баз данных. За счет такого разделения возможна оптимизация работы системы в целом.
Многоуровневый подход позволяет снизить сложность разрабатываемого приложения путем разбиения сложной бизнес- логики на части, которые легче анализировать, а значит и разрабатывать более оптимальные приложения. Простейшей формой многоуровневого приложения является трехуровневое, которое состоит из следующих уровней :
- уровень пользовательского сервиса .
- уровень бизнес- сервиса.
- уровень сервиса данных.

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

Что представляют собой сервисы ?
Это логические единицы, которые объединяются в модули физического кода, называемого компонентами.
В дальнейшем к этим компонентам ссылаются как к целостным бизнес-объектам. Таким образом, задача построения бизнес- приложения состоит в комбинировании таких компонентов.
Как и любые другие объекты, бизнес- объекты характеризуются следующими параметрами:

· Свойства. Характеристики бизнес- объекта, как объекта реального мира.
· Методы. Функции обработки свойств бизнес- объекта.The functionality implemented, such as Compute Tax Rate or Compute Tax Amount.
· События. События, связанные с поведением объекта в реальном мире, часто инициированные клиентом.
В такой модели бизнес- объекты могут выступать как в роли сервера, так и клиента, вызывая другие бизнес- объекты.Смысл введения бизнес- объектов в том, чтобы скрыть от пользователя ненужные детали реализации, позволив ему сосредоточиться на решении прикладных задач. Кроме этого такой подход дает возможность повторного использования кода, который реализует бизнес- объект. Например, бизнес- объект, реализующий перевод из одной валюты в другую может быть использован многократно, в то время как при обычном подходе его пришлось бы переписывать заново в каждом приложении. Кроме того, благодаря четким стандартам, можно приобретать бизнес- объекты у других производителей.
Как же собирать приложение из готовых объектов?
Корпорация Inprise(Borland) предлагает эффективное решение- Delph 4 с поддержкой технологиии MIDAS(Multi-tier Distributed Application Suite).
MIDAS(Multi-tier Distributed Application Suite). Заметим, что в древнегреческой мифологии царь по имени Мидас превращал в золото все, к чему прикасался.
Эта технология обеспечивает механизм, с помощью которого каждое клиентское приложение и каждый сервер приложений могут взаимодействовать с сервером базы данных.

delphi4_1.bmp (95326 bytes)

Рис.2. Архитектура трехуровневой информационной системы с использованием MIDAS.

MIDAS представляет собой совокупность сервисов, интегрированных в Delphi для создания распределенных приложений. MIDAS обеспечивает интеллектуальное централизованное управление бизнес-логикой и эффективное выполнение транзакций на уровне предприятия.Как видно из рисунка, состав этих сервисов весьма разнообразен, это и классический Web- сервер, и объекты в технологиях CORBA, COM и DCOM. Связь с технологиями Microsoft обеспечивается встроенными в Delphi4 возможностями быстрой разработки приложений для Microsift Transaction Server(MTS).
Цепочка событий взаимодействия сервера и клиента в многоуровневом приложении, построенном в технологии MIDAS, выглядит следующим образом:
1. Когда пользователь запускает клиентское приложение, оно соединяется с сервером приложений и получает от него a provider interface.
2 . Клиент запрашивает данные от сервера приложений.
3. Сервер приложений получает данные от сервера баз данных, кодирует их в пакеты и пересылает клиенту.
4. Клиент декодирует пакеты данных и визуализирует их для пользователя.
5. При взаимодействии пользователя с клиентским приложением данные изменяются. Эти изменения запоминаются на клиенте.
6. Время от времени клиент пересылает изменения, упакованные в пакеты, на сервер приложений, обычно в соответствии с действиями пользователя.
7. Сервер приложений декодирует пакеты и пересылает изменения на сервер бах данных в контексте транзакций.Процесс анализа записи, полученной от клиента, называется "разрешением".
8. Когда сервер приложений завершает процесс разрешения, он возвращает все ошибочные записи клиенту для исправлений.
9. Клиент пытается исправить данные, которые возвращены сервером приложений.Если это удается, клиент возобновляет посылку данных на сервер приложений.
10. Клиент обновляет свои данные, теми, которые получены от сервера приложений.

Delphi4- основной инструмент для построения многоуровневых приложений в технологии MIDAS.
Наличие в Delphi4 специальных компонентов MIDAS в сочетании с удобной средой разработки, развитыми возможностями работы с различными СУБД (такими, как Oracle8), предоставляют новые возможности для построения многоуровневых приложений.
Общая процедура построения многоуровневого приложения с помощью Delphi состоит из следующих шагов:
1. Создание сервера приложений.
2. Регистрация или инсталляция сервера приложений.
3. Создание клиентского приложения.

Порядок создания важен.Создать и запустить сервер приложений необходимо раньше, чем создан клиент. Во время проектирования необходимо подключиться к серверу приложений для тестирования клиента.При создании клиента на другом компьютере необходимо зарегистрировать на нем сервер приложений, благодаря этому подключение происходит во время проектирования и имя сервера можно выбрать из выпадающего меню в инспекторе объектов.
Создание сервера приложений состоит из следующих шагов:
1. Открыть новый проект.
2. Добавить в проект модуль remote data module
Из основного меню выбрать File|New, затем выбрать закладку Multitier и выделить Remote Data Module(если нужно создать сервер в технологии COM).
3. Разместим на форме компонеты Table, Query,StoredProcedure и сделать установки для доступа к серверу баз данных.
4. Разместить на форме компонент provider или BDE- компонент для размещения данных, полученных от сервера баз данных.
5. Необходимо экспортировать каждый провайдер в модуль Remote data module для регистрации библиотеке типов.Чтобы сделать это, нужно выделить каждый компонент provider правой кнопкой мыши и выбрав из выпадающего меню Export From <Name> in Data Module.
6. При использовании компонента provider нужно установить в свойстве DataSet имя компонента который обеспечивает доступ к данным.
7. Создать код сервера приложений для описания реакции на события, разделямых бизнес- правил и доступа к разделяемым данным.
8. Сохранить, компилировать, зарегистрировать или инсталлировать сервер приложений.
Создание сервера приложений подобно созданию приложений, работающих с базами данных. Однако, разница в том, что сервер приложений включает провайдеры нескольких типов, например, компоненты TProvider или TdataSetProvider.
В описанной выше процедуре мы рассмотрели построение сервера приложений, использующего DCOM, sockets или OLEnterprise в качестве коммуникационного протокола. Этот сервер функционирует как Automation server и должен быть зарегистрирован подобно ActiveX или COM- сервер.

Если сервер приложений не использует DCOM, необходимо инсталлировать runtime который взаимодейтсвует с сервером приложений. Для сокетов TCP/IP в Delphi4 поддерживаются диспетчеры приложений: ScktSrvr.exe и ScktSrvc.exe. Первый предназначен для Windows95, а второй функционирует как сервис WindowsNT.
Для OLEnterprise обеспечивается OLEnterprise, а для технологии CORBA- VisiBroker ORB.

Дополнительную информацию Вы можете получить в компании Interface Ltd.


Interface Ltd.

Ваши замечания и предложения отправляйте вебмастеру