![]() |
Технология Клиент-Сервер 2003'1 |
||||||
|
В наше время практически во всех сферах жизни человеческого общества применяются те или иные системы обработки данных. Это могут быть банковские системы, промышленные программные комплексы, средства автоматизации торговли и многие другие приложения. Постоянное расширение областей применения вычислительной техники и все возрастающая сложность решаемых задач требуют совершенствования методов разработки информационных систем.
Во второй половине 90-х годов XX века наряду с доминирующей двухуровневой архитектурой появилась новая архитектура построения приложений – трехуровневая. Ее основное отличие от традиционной архитектуры “клиент-сервер” заключается в том, что деловая логика системы выносится на отдельный средний уровень (сервер приложений) и отделяется от пользовательского интерфейса и уровня хранения данных. Актуальность трехуровневой архитектуры обусловлена следующими причинами:
Поддержка распределенных архитектур и Интернет
Создание Интернет-систем невозможно без выноса деловой логики на средний уровень. Понятие “тонкого клиента” подразумевает использование серверов приложений, так как сервер БД не предназначен для обработки http-обращений, а HTML-клиент с броузером не может обсчитывать данные. В отличие от клиент-серверной, трехуровневая модель позволяет обеспечить доступ к данным клиентам самых различных типов – Windows-клиент через ЛВС, HTML-клиент через Интернет, наладонный компьютер (PDA) через беспроводный доступ.
Снижение затрат
Отделение обработки данных от пользовательского интерфейса позволяет менять деловую логику, не затрагивая клиентскую часть – все, что необходимо, изменяется лишь в одном месте, на сервере приложений. За счет этого удается снизить как финансовые, так и временные затраты на обслуживание систем.
Масштабируемость
При повышении требований к быстродействию возможен перенос деловой логики системы на более производительную платформу, что обеспечивается кросс-платформенной совместимостью сервера приложений. При необходимости наращивания вычислительных ресурсов становится возможным приобрести только один мощный компьютер для сервера приложений, избегая замены множества быстродействующих клиентских станций.
Отказоустойчивость
Технологии, лежащие в основе сервера приложений, позволяют строить отказоустойчивые системы, способные работать даже в случае выхода из строя одного или нескольких компьютеров. При этом используется кластеризация – объединение в единую логическую группу нескольких серверов приложений. Для клиентов такая группа выглядит как единый сервер, и в случае выхода из строя какого-либо из серверов кластера нагрузка динамически перераспределяется между оставшимися серверами.
Используя многолетний опыт в области выпуска инструментов построения корпоративных приложений, корпорация 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:
Сервер приложений (application server) – среда исполнения бизнес-компонентов, реализующих деловую логику приложений. Компоненты могут вызываться не только клиентскими программами, возможен вызов методов одного компонента другим компонентом, расположенном на том же самом или на другом сервере приложений.
Клиентское приложение (client application) – программный модуль, вызывающий методы удаленных компонентов. При работе с сервером приложений клиентское приложение может также вызывать методы удаленных компонентов, как если бы эти компоненты были расположены локально.
Компоненты (components) – невизуальные пользовательские объекты PowerBuilder (Non-Visual User Objects, NVOU’s). В этих объектах в виде пользовательских функций (User Object Functions) пишутся методы, реализующие бизнес-логику системы на языке PowerScript. В таких методах доступна любая программная функциональность PowerBuilder, в том числе и работа с DataWindow (точнее с его невизуальным вариантом DataStore, специально предназначенном для использования в распределенных архитектурах).
Прокси-объект (proxy object) – описание сигнатур методов компонента, расположенного на сервере приложений. Proxy генерируется по такому компоненту и помещается в библиотеку PBL того клиентского приложения, которое будет вызывать методы этого удаленного объекта. Под термином "сигнатуры методов" понимаются названия пользовательских функций, типы возвращаемых ими данных, а также типы и названия аргументов, которые должны передаваться этим функциям при их вызовах.
Коммуникационный объект (connection object) - объект для установки соединения клиентской программы с сервером приложений. Необходимая для такого соединения информация, такая как адрес сервера приложений или имя пользователя, содержится в свойствах данного объекта.
Рассмотрим подробнее компонентную модель трехуровневого приложения, создаваемого средствами PowerBuilder. При разработке такого распределенного приложения необходимо всю его деловую логику реализовать в виде методов (User Object Functions) невизуальных пользовательских объектов (PB NVUO’s). Такая модель представления деловой логики является основной идеей создания трехуровневых приложений средствами Powerbuilder и EAServer. Реализованный в этой модели бизнес-компонент (он же PB NVUO) размещается на сервере приложений EAServer и для такого компонента генерируется прокси-объект, помещаемый в клиентское приложение. После этого клиент с использованием данного прокси может вызывать методы работающего на сервере приложений удаленного компонента.
В этой статье мы не будем останавливаться на подробностях создания NVUO, и ограничимся описанием принципов создания трехуровневого приложения средствами Powerbuilder и EAServer.
Рисунок 1.
Рисунок 2.
Рисунок 3
Создание реализующего деловую логику компонента осуществляется в User Object Painter – создается невизуальный пользовательский объект (Non-Visual User Object), и в его методах (User Object Functions) на языке Powerscript реализуется необходимая деловая логика (рисунок 1).
Для развертывания (deploy) созданного компонента на EAServer из среды PowerBuilder используется EAServer Component Wizard (рисунок 2).
С его помощью создается проект (Project), в котором указывается, какой компонент и на каком EAServer развертывать, в какой пакет (Package) его помещать, какие установки и как использовать (рисунок 3).
При нажатии кнопки Deploy происходит собственно процесс развертывания (то есть переноса) компонента на EAServer :
Рисунок 4.
Далее необходимо создать объект Connection, который позволит клиентскому приложению установить связь с EAServer.
Рисунок 5.
В свойствах данного объекта указывается информация о том EAServer, с которым необходимо работать – адрес и порт сервера, имя пользователя и пароль.
Рисунок 6.
Следующий шаг – генерация прокси-объекта, который позволит клиентскому приложению обращаться к методам размещенного на EAServer компонента. Делается это через EAServer Proxy Wizard. В качестве места для размещения прокси-объекта указывается PBL-библиотека того клиентского приложения, которое будет обращаться к методам указанного компонента.
Далее в клиентском приложении пишется код, осуществляющий присоединение к EAServer:
n_jaguar_connect gn_connect long ll_rc 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 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 ld_payment = in_loan.calculate(ld_amount, li_months)
После окончания использования методов удаленного компонента необходимо удалить из памяти клиентского приложения экземпляр прокси-объекта и отсоединиться от сервера приложений:
Destroy(in_loan) gn_connect.DisconnectServer()
В конце марта 2003 года выходит в свет новая, девятая версия PowerBuilder. Среди ее новых возможностей необходимо отметить следующие:
поддержка XML в Datawindow – экспорт / импорт данных из Datawindow или Datastore в XML-формат. Экспорт возможен как через использование функции SaveAs: dw_1.SaveAs(“C:\TEMP\Temp.xml”, XML!, True) так и через путем применения объектного синтаксиса: ls_xmlstring = dw_1.Object.Datawindow.Data.XML. Импорт осуществляется через функции ImportFile и ImportString или через DataWindow Painter;
PowerBuilder Native Interface (PBNI) – программный интерфейс, позволяющий вызывать методы реализованных на PowerBuilder невизуальных пользовательских объектов (NVUO) из C++;
PowerBuilder Document Object Model (DOM) – поддержка возможности работы с XML-документами из кода на Powerscript;
Разработка JSP-страниц – возможность использования PowerBuilder в качестве RAD-инструмента для создания JSP-приложений;
Клиентская поддержка EJB - позволяет осуществлять вызовы компонентов EJB серверов приложений третьих фирм;
Экспорт DataWindow в PDF-формат - возможность сохранения подготовленных на PowerBuilder отчетов в Portable Document Format (PDF).
Более подробно о новой версии PowerBuilder мы расскажем в следующем номере журнала.
На современном этапе использования информационных технологий распределенные вычисления являются одним из наиболее перспективных направлений их развития. Рассмотренное средство разработки PowerBuilder является полнофункциональным инструментом для быстрого и эффективного создания распределенных трехуровневых приложений. Если вас заинтересовали описанные в данной статье программные средства, демонстрационные версии PowerBuilder и EAServer вы можете скачать из Интернет по адресам http://www.sybase.com/pb8_eval или http://www.sybase.ru/download/prodreview/powerbuilder.htm
Copyright © 1994-2016 ООО "К-Пресс"