Средства создания многозвенных систем
Дополительные инструменты
BDE Administrator
SQL Explorer
SQL BuilderM
Компоненты для создания систем принятия решений
Возможности публикации данных в Internet
За год существования С++Builder у этого продукта появилось немало сторонников. Сочетание универсального языка программирования, являющегося, по существу, индустриальным стандартом, комфортной среды разработки, зарекомендовавшей себя еще до появления самого С++Builder, возможности быстрой разработки приложений с минимальным использованием ручного кодирования, удобного и универсального механизма доступа к данным сделали этот продукт весьма привлекательным для разработчиков и менеджеров информационных систем.
Появления новой версии разработчики ждали давно - с момента выхода Delphi 3, обладавшей набором интересных и полезных возможностей, отсутствовавших в первой версии C++Builder. Теперь можно с уверенностью сказать, что новый С++Builder оправдал ожидания разработчиков: он не только предоставляет те же возможности, что и Delphi 3, но и довольно широкий спектр дополнительных возможностей, пользователям Delphi пока неизвестных. В данной статье будут рассмотрены наиболее интересные особенности C++Builder 3.0, связанные с созданием информационных систем.
Говоря о С++Builder как об инструменте создания корпоративных информационных систем, в том числе ИС масштаба предприятия, следует остановиться на такой замечательной возможности, как средства создания серверов приложений и "тонких" клиентов. В комплект поставки версии C++Builder Client/Server Suite входит MIDAS Development Kit, представляющий собой набор компонентов и брокеров middleware, позволяющих создавать и отлаживать серверы приложений и использующие их клиентские приложения. Иными словами, С++Builder, наравне с Delphi, теперь также поддерживает MIDAS.
Простейший MIDAS-ориентированный сервер приложений можно создать буквально за несколько минут. Для этого достаточно выбрать из репозитория объектов C++Builder пиктограмму Remote DataModule и в удаленный модуль данных поместить какой-либо компонент доступа к данным (например, TTable или TQuery), установить значения его свойств DatabaseName и TableName (или SQL), установить значение его свойства Active равным true. Затем нужно экспортировать его из модуля данных (рис….), выбрав соответствующую опцию контекстного меню, а затем скомпилировать и выполнить созданное приложение, чтобы зарегистрировать его в реестре . Далее следует запустить приложение scktsrvr.exe (Borland MIDAS Socket Server), чтобы сервер приложений мог быть запущен удаленно по протоколу TCP/IP.
Рис.1. Библиотека типов, связанная с удаленным модулем данных
Теперь можно создать клиентское приложение (причем не обязательно на том же самом компьютере - главное, чтобы компьютер с сервером приложений был доступен по протоколу TCP/IP), поместив на форму компоненты TMidasConnection, TClientDataSet, связанный с ним компонент TDataSource и связанные с ним интерфейсные элементы для отображения данных (например, TDBGrid). У компонента TMidasConnection следует установить значение свойства ComputerName равным IP-адресу компьютера, на котором находится сервер приложений, свойства ServerName равным имени сервера приложений (в формате <имя исполняемого файла>.<имя OLE-сервера>), а свойства ConnectType равным TCP/IP. Затем свойство Connected можно установить равным true, и сервер приложений после этого должен запуститься удаленно. Теперь можно установить значение свойства RemoteServer компонента TClientDataSet равным имени компонента TMidasConnection, а также значение свойства ProviderName равным имени экспортированного объекта из удаленного модуля данных сервера приложений. Осталось установить свойство Active этого компонента равным true, вызвать в каком-нибудь обработчике событий метод ApplyUpdates компонента TClientDataSet - и простейший "тонкий" клиент готов!
Рис.2. "Тонкий" клиент
Следует отметить, что в C++Builder, так же как и в Delphi, имеется возможность создания активных форм - для этой цели используется библиотека Active Template Library. Этим можно воспользоваться для создания "тонкого" клиента, отображаемого в броузере, и не требующего предварительной установки, наcтройки и конфигурации, но имеющего, в отличие от Web-приложений типа CGI или ISAPI, полноценный Windows-интерфейс.
Рис.3. "Тонкий" клиент в виде ActiveX
Что дает использование трехзвенных информационных систем? Об их преимуществах сказано уже немало. Во-первых, "тонкий" клиент, подобный рассмотренному выше, не требует наличия на рабочей станции ни клиентской части серверной СУБД, ни библиотеки Borland Database Engine, и, соответственно, не требует конфигурации клиентской части и настройки BDE. Единственное, что требуется на рабочей станции - наличие библиотеки dbclient.dll размером 140 Кб, которую можно поставлять вместе с клиентским приложением. Во-вторых, для такого клиентского приложения требуется меньше ресурсов, чем для классического "толстого" клиента. В-третьих, вместо создания дистрибутива достаточно скопировать на рабочую станцию исполняемый файл и dbclient.dll (или загрузить в Internet Explorer web-страницу с компонентом ActiveX). Таким образом, налицо прямое снижение затрат, связанных с конфигурацией рабочих станций и ресурсоемкостью клиентских приложений.
Помимо перечисленных очевидных преимуществ трехзвенной архитектуры, MIDAS также предоставляет дополнительные возможности повышения надежности используемой информационной системы. Например, при наличии в сети нескольких однотипных серверов приложений сбой одного из таких серверов приведет к распределению подключенных к нему "тонких" клиентов по другим серверам - это сделает Busiess ObjectBroker. Он же обеспечивает и равномерную загрузку серверов приложений клиентскими соединениями.
Но это еще не все. Именно трехзвенная архитектура позволяет реально осуществить централизацию хранения и обработки данных с одновременным доступом к актуальной информации в случае, когда рабочая станция находится на значительном расстоянии от сервера приложений, исключающем прокладку локальной сети, так как доступ к серверу приложений может осуществляться и иными способами, такими, как модемное соединение или доступ через Internet. Требования к надежности такого соединения невысоки, так как при использовании подобной архитектуры активно применяется кэширование данных на рабочей станции, и при этом использование ConstraintBroker позволяет проверять соответствие изменяемых данных правилам сервера непосредственно на рабочей станции, поэтому применение "тонких" клиентов и серверов приложений, управляемых MIDAS, является наилучшим решением для территориально разбросанных предприятий, организаций с удаленными филиалами, в том числе в других городах и странах.
Отметим, однако, что MIDAS Development Kit позволяет лишь создавать и отлаживать серверы приложений. Входящий в его состав ConstraintBroker обладает ограниченным временем действия, а Business ObjectBroker обладает ограничением на число экспортируемых OLE-объектов. Только полнофункциональная версия MIDAS позволяет использовать эти брокеры без подобных ограничений (и не нарушать при этом лицензионные соглашения).
Отметим, что возможности создания многозвенных систем ограничиваются не только MIDAS-ориентированными серверами. Наряду с версией C++Builder Client/Server Suite имеется версия C++Builder Enterprise, позволяющая создавать "тонкие" клиентские приложения для сервера приложений Borland Entera c помощью компонентов TEnteraConnection и TEnteraProvider. Отметим, что Entera существует для большого количества платформ, что позволяет создавать многоуровневые системы в гетерогенной среде, где не только серверы баз данных, но и серверы приложений функционируют на платформах, отличных от Windows (например, на UNIX-платформах), что позволяет выбрать наиболее оптимальное для предприятия сочетание удобства, масштабируемости и надежности.
BDE Administrator
В комплект поставки C++Builder теперь входит новая версия утилиты конфигурации BDE - BDE Administrator, устанавливающаяся теперь в панель управления Windows. Эта утилита обладает более удобным интерфейсом и некоторыми полезными возможностями по сравнению с утилитой конфигурации BDE из прежней версии C++Builder. Во-первых, в процессе конфигурации доступа к серверным СУБД она позволяет вызвать утилиты из состава клиентской части серверной СУБД, например, консольные приложения для интерактивной работы с SQL, такие, как SQL Plus из клиентской части Oracle 7 или Interactive SQL из клиентской части IB Database, утилиты для установки и конфигурации клиентской части, ODBC-администратор и т.д.. Во-вторых, эта утилита считывает конфигурационые файлы клиентских частей серверных СУБД (такие, как TNSNAMES.ORA для Oracle 7) и при выборе серверной СУБД предлагает список доступных баз данных из этих файлов. В-третьих, эта утилита позволяет проверить корректность настроек псевдонимов путем установки соединения с базой данных и не требует запуска для этой цели других приложений, как это было в прежней версии С++Builder.
Рис.4. BDE Administrator
SQL Explorer
Значительные изменения по сравнению с прежней версией претерпела и утилита SQL Explorer. Теперь с ее помощью можно не только просматривать, но и создавать и редактировать объекты серверных СУБД, такие как таблицы, индексы, триггеры, хранимые процедуры, серверные ограничения (Constraints), представления (Views), табличные области и другие объекты серверных СУБД. Фактически новая версия SQL Explorer представляет собой удобную и простую утилиту администрирования одновременно всех имеющихся в доступности баз данных, что по достоинству могут оценить менеджеры информационных систем, содержащих несколько различных СУБД, например, одновременно Oracle, IB Database и таблицы Paradox.
Рис. 5. SQL Explorer
SQL Builder
В C++Builder 3.0 включено новое средство построения SQL-запросов - SQL Builder, заменивший Visual Query Builder, входивший в комплект поставки прежней версии, а также всех версий Delphi.
Рис. 6. SQL Builder
Этот инструмент отличается более удобными по сравнению с Visual Query Builder визуальными средствами редактирования запросов, а также возможностью редактирования текста запроса. При этом возможна синхронизация визуального представления с отредактированным текстом, если последний не содержит ошибок.
Рис. 7. Редактор текста запросов SQL Builder
Отметим также, что возможно выполнение созданного запроса непосредственно из SQL Builder, что позволяет проверить правильность его построения.
Среди компонентов, связанных с использованием баз данных, появилась группа Decision Cube для создания систем поддержки принятия решений. Эти компоненты применяются при создании приложений, используемых менеджерами высшего звена и предназначенных для многомерного анализа данных. Decision Cube представляет собой набор многомерных кросс-таблиц, содержащих агрегатные данные, вычисленные на основе какого-либо запроса. Компонент TDecisionGrid позволяет просматривать различные двумерные и трехмерные сечения такого куба как на этапе проектирования приложения, так и на этапе выполнения, а компонент TDecisionGraph - создать диаграмму, соответствующую текущему сечению.
Рис.8. Decision Cube
Сами данные выбираются из таблиц с помощью компонента TDecisionQuery, обладающего редактором свойств, позволяющим визуально построить запрос с агрегатными данными, в том числе с использованием SQL Builder.
Рис.9. Редактор свойств компонента TDecisionQuery
Для обмена многомерными данными между TDecisionQuery и компонентами отображения многомерных данных TDecisionGraph и TDecisionGrid используется компонент TDecisionSource - аналог компонента TDataSource.
Управлять отображением сечений можно с помощью компонента TDecisionPivot либо путем "сворачивания" и "разворачивания" размерностей непосредственно в компоненте TDecisionGrid.
Рис.10. Управление отображением сечений
Для создания web-приложений можно, как известно, использовать абсолютно любое средство разработки, лишь бы полученное приложение было способно выполняться в той операционной системе, под управлением которой функционирует web-сервер. Поэтому, говоря о создании таких приложений, было бы преувеличением сказать, что до появления C++Builder 3 такой возможности не было - создать, например, динамически загружаемую библиотеку, являющуюся расширением Internet Information Server или Netscape Fast Track (т.е. web-приложение в стандарте ISAPI/NSAPI) с успехом можно было и с помощью C++Builder 1.0, а CGI-приложения, как показывает опыт российских разработчиков, без особых проблем создаются с помощью Clipper, FoxPro и даже с помощью обычных командных файлов. Однако такие приложения так или иначе требуют написания некоторого количества кода, и вопрос удобства того или иного средства разработки так или иначе связан с желанием минимизировать рутинную работу, связанную с процессом "ручного" кодирования. И в этом отношении C++Builder 3.0 является весьма удобным средством разработки, так как обладает неплохими возможностями визуального проектирования подобного рода приложений.
Среди доступных разработчику средств визуальной разработки web-приложений хотелось бы особо отметить средства, позволяющие осуществлять публикацию данных в Internet. Для этой цели используются компоненты TDataSetTableProducer и TDataSetQueryTableProducer, получающие данные из компонента TTable или TQuery и представляющие их в виде HTML-документа в табличном виде (рис. 11).
Рис.11. Редактор свойств компонента TDataSetTableProducer
Пример подобной публикации данных в Internet, созданный сотрудниками Борланд АО (прайс-лист, передаваемый в броузер с помощью динамически загружаемой библиотеки в стандарте NSAPI), можно найти по адресу http://www.borland.ru.
Отметим также, что сама возможность размещения в объекте TWebModule компонентов доступа к данным существенно облегчает создание CGI-приложений, связанных как с публикацией данных, так и с обработкой пользовательского ввода (например, в HTML-формах), заключающегося в изменении или добавлении данных. Типичными примерами таких приложений являются анкеты, которые в изобилии встречаются на многих web-серверах.
Помимо этого, публикация данных возможна также с помощью так называемых шаблонов - HTML-документов, содержащих специальные теги, заменяемые в процессе формирования HTML-страницы строками, которые, в свою очередь, могут быть получены путем выполнения запроса к базе данных.
В заключение хотелось бы отметить, что новые возможности эффективной разработки информационных систем, предоставляемые C++Builder, отнюдь не ограничиваются перечисленными в данной статье нововведениями, хотя и представляются наиболее интересными.
В ближайших статьях цикла, посвященного C++Builder, эти возможности будут рассмотрены более подробно.
Координаты автора:
Центр Информационных Технологий,
Тел. (095)932-92-12, 932-92-13,
http://www.citmgu.ru,
http://www.citforum.ru