Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

PowerBuilder как средство разработки распределенных приложений для EAServer

© Кабанов Роман, Sybase CIS
© Статья была опубликована на сайте Sybase CIS

Технологии распределенных вычислений

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

С начала 90-х годов XX века известна такая технология реализации программных приложений как архитектура "клиент-сервер". Ее основная особенность состоит в том, что приложение делится на два уровня - представление данных (клиент) и хранение данных (сервер БД). Обработка информации происходит на клиенте, на сервер посылаются запросы и обрабатываются полученные в ответ на них данные. Такой подход оправдывает себя при создании небольших, относительно несложных систем. Но по мере развития приложений, по мере роста объемов данных и ужесточения требований к скорости их обработки, становятся видны недостатки двухуровневой архитектуры. На смену ей приходит новая архитектура - трехуровневая. Она характеризуется тем, что деловая логика системы выносится на отдельный уровень и обособляется от пользовательского интерфейса и хранения данных. В трехуровневой модели выделяются следующие уровни:

Рисунок 1. Трехуровневая архитектура

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

Актуальность трехуровневой архитектуры обусловлена следующими причинами :

Инструменты разработки трехуровневых систем - подход Sybase

Используя свой многолетний опыт в области выпуска инструментов построения корпоративных приложений, корпорация Sybase предлагает законченное решение для реализации систем в трехуровневых архитектурах. В качестве сервера приложений предлагается Enterprise Application Server (EAServer) - высокопроизводительная среда для исполнения компонентов, реализующих деловую логику информационной системы. Отличительной чертой EAServer является открытость - он поддерживает широкий перечень различных типов компонентов, таких как Java, C/C++, COM/ActiveX, PowerBuilder Non-Visual User Object (PB NVUO). Впечатляет набор операционных систем, поддерживаемых EAServer - это как все варианты 32-разрядных ОС семейства Windows, так и наиболее известные UNIX-платформы (Sun Solaris, Hewlett Packard HP-UX, IBM AIX, а также LINUX). Более подробную информацию о возможностях EAServer можно найти в статье [1].

В качестве средства разработки приложений для трехуровневой архитектуры предлагается PowerBuilder - инструмент, который без преувеличения можно назвать классикой систем, предназначенных для работы с SQL СУБД. Начиная с первых версий PowerBuilder был средством разработки клиент-серверных приложений, и средством достаточно успешным. Основой его успеха стала удачная технология работы с данными через механизм DataWindow, а также открытость и масштабируемость. Мало какой иной инструмент позволяет работать с таким широким спектром источников данных - от DBF-файлов до корпоративных БД масштаба Sybase SQL Server или Oracle.

Первые возможности для разработки трехуровневых приложений появились в PowerBuilder в середине 90-х годов. С течением времени эта функциональность развивалась и наращивалась, и текущая версия продукта - PowerBuilder 8.0 - предлагает широкие возможности для разработки многоуровневых информационных систем. Одна и та же деловая логика, реализованная средствами PowerBuilder и функционирующая в виде компонентов на EAServer, доступна для использования в любых типах архитектур - как клиент-серверных, так и распределенных, а также и в Интернет. Такие технологии как DataWindow и PowerScript могут использоваться как при разработке обычных Windows-программ, так и при создании бизнес-компонентов, предназначенных для работы в среде EAServer. Более того, предлагаются специальные методики переноса двухуровневых приложений, написанных в прежние годы на PowerBuilder, в трехуровневую архитектуру. Деловая логика таких приложений выносится из клиентских программ и реализуется в виде компонентов для EAServer. Эти компоненты развертываются на сервере приложений, и клиентские программы настраиваются для вызова их методов. За счет того, что в EAServer реализована полная функциональность PBVM (PowerBuilder Virtual Machine), достигается возможность исполнения написанного на PowerBuilder кода на сервере приложений без каких-либо ограничений. Ни один из других представленных на рынке серверов приложений не предлагает разработчикам на PowerBuilder такой возможности. Необходимо отметить, что связка PowerBuilder + EAServer является в настоящее время полнофункциональным и хорошо отлаженным решением, предлагаемым компанией Sybase для реализации многоуровневых информационных систем.

Создание распределенных приложений на PowerBuilder

Основные понятия, используемые при разработке трехуровневых приложений в среде PowerBuilder:

Создание реализующего деловую логику компонента осуществляется в User Object Painter - создается невизуальный пользовательский объект (Non-Visual User Object), и в его методах (User Object Functions) на языке Powerscript реализуется необходимая деловая логика.

Для развертывания (deploy) созданного компонента на EAServer из среды PowerBuilder используется EAServer Component Wizard.

С его помощью создается проект (Project), в котором указывается, какой компонент на каком EAServer развертывать, в какой пакет (Package) его помещать, какие установки и как использовать.

При нажатии кнопки Deploy происходит собственно процесс развертывания (то есть переноса) компонента на EAServer :

Далее необходимо создать объект Connection, который позволит клиентскому приложению установить связь с EAServer.

В свойствах данного объекта указывается информация о том EAServer, с которым необходимо работать - адрес и порт сервера, имя пользователя и пароль.

Следующий шаг - генерация прокси-объекта, который позволит клиентскому приложению обращаться к методам размещенного на EAServer компонента. Делается это через EAServer Proxy Wizard. В качестве места для размещения прокси-объекта указывается PBL-библиотека того клиентского приложения, которое будет обращаться к методам указанного компонента.

Далее в клиентском приложении пишется код, осуществляющий присоединение к EAServer:

// задаем глобальную переменную типа n_jaguar_connect,
// это сгенерированный ранее Connection Object
n_jaguar_connect gn_connect
long ll_rc
// создаем экземпляр данного Connection Object
gn_connect = CREATE n_jaguar_connect
// осуществляем присоединение клиента к серверу приложения
ll_rc = gn_connect.ConnectToServer()
// проверяем, успешно ли прошло соединение
IF ll_rc <> 0 THEN
// Если произошла ошибка
MessageBox("Connection Error", "Return Code: " + string(ll_rc))
ELSE
// Если ошибок нет, то можно работать дальше
Open(w_loan)
END IF

Следующий шаг - инициализация прокси-объекта, необходимого для вызова методов компонента, функционирующего на EAServer:

// Декларируем переменную для работы с прокси,
// где n_loan - название сгенерированного ранее прокси-объекта
n_loan in_loan
long ll_rc
// Создаем экземпляр прокси-объекта
ll_rc = gn_connect.CreateInstance (in_loan, "finance/n_loan")
// Проверка успешности создания экземпляра прокси
IF ll_rc <> 0 THEN
MessageBox("Error creating proxy instance", "Return Code: " + string (ll_rc))
END IF


Если предыдущий шаг прошел успешно, то можно осуществлять вызовы методов компонентов:

double ld_amount, ld_payment
int li_months
ld_amount = 1500
li_months = 6
// Вызов метода компонента
//
// in_loan - название экземпляра прокси-объекта
// calculate() - название вызываемого метода
ld_payment = in_loan.calculate(ld_amount, li_months)


После окончания использования методов компонента необходимо удалить из памяти клиентского приложения экземпляр прокси-объекта и отсоединиться от сервера приложений:

Destroy(in_loan)
gn_connect.DisconnectServer()

PowerBuilder 9.0

В конце марта 2003 года вышла в свет новая, девятая версия PowerBuilder. Среди ее новых возможностей необходимо отметить следующие:

Более подробно о выпуске PowerBuilder 9.0 можно почитать в статье [2].

Заключение

На современном этапе использования информационных технологий распределенные вычисления являются одним из наиболее перспективных направлений их развития. Рассмотренное средство разработки PowerBuilder является полнофункциональным инструментом для быстрого и эффективного создания распределенных трехуровневых приложений. Если Вас заинтересовали описанные в данной статье программные средства, демонстрационные версии PowerBuilder и EAServer вы можете скачать из Интернет по адресам http://www.sybase.com/pb8_eval или http://www.sybase.ru/download/prodreview/powerbuilder.htm

Дополнительная информация

За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме Sybase

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
Ваши замечания и предложения отправляйте редактору
По техническим вопросам обращайтесь к вебмастеру
Дата публикации: 13.08.03