Видавничий дім - Пітер - Електронний каталог
Набір компонентів IntraWeb розвивається в системах розробки Borland вже багато років. За допомогою технології IntraWeb процес створення веб-програм практично не відрізняється від процесу створення звичайної програми Windows. Підготовка веб-програми виконується у візуальному проектувальнику за допомогою компонентів, що зовні ідентичні компонентам панелі Standard.
46.1. Огляд технології IntraWeb
Як прикладна форма в проекті IntraWeb виступає не форма Windows, а вікно браузера. Але при проектуванні не потрібно спеціальних знань мови розмітки HTML і мережевих протоколів 1 .
Компоненти IntraWeb відрізняються від аналогів для Windows за префіксом IW. Наприклад, компонент - кнопка (TButton) у технології IntraWeb називається TIWButton. Компоненти IntraWeb доступні на панелі інструментів після створення порожньої заготівлі проекту IntraWeb.
За результатами численних випробувань доведено, що в плані ефективності IntraWeb як мінімум не поступається таким стандартним веб-технологіям, як ASP, CGI та ISAPI.
ПРИКЛАД 46.1 Створення простої програми IntraWeb
1. Створення заготовки програми.
Створення заготовки програми IntraWeb вимагає додаткових налаштувань.
Мал . 46.1. Вибираємо заготівлю проекту IntraWeb
1.2. Відкриється діалогове вікно. Структуру створюваного серверного модуля вибирають у розділі Application Type ( Тип програми ). Виберемо варіант StandAlone Application (Автономний додаток), який представляє цільовий веб-модуль у вигляді самостійного файлу, що виконується.
1.3. Вкажемо каталог проекту у полі Project Directory (Каталог проекту), а ім'я проекту – у полі Project Name (Ім'я проекту). У списку, що розкривається MainForm (Головна форма) налаштовують вигляд користувача форми на конкретний пристрій.
1.4. Закриємо діалогове вікно і збережемо проект IntraWeb, що створюється. Середовище C++Builder згенерує порожню заготівлю майбутньої програми. Проектована веб-форма програми доступна у вікні Проектувальника. Вона являє собою варіант сторінки, що відображається у браузері користувача.
2. Підготовка інтерфейсу користувача.
З точки зору прикладного програміста, створення програми IntraWeb майже не відрізняється від створення звичайної програми. Так само використовується Проектувальник і програмується логіка обробки дій користувача. Ця логіка може бути перенесена в автономну програму або, навпаки, витягнута з програми Windows. Наприклад, можна просто скопіювати код обробників натискань кнопок.
2.1. Розмістимо на формі кнопку TIWButton із панелі IW Standard.
У її властивості Caption задамо підпис Скласти.
2.2. Додамо два текстові поля (компонент IWEdit) та напис IWLabel.
Мал . 46.2. Проектування веб-форми програми IntraWeb
3. Програмування логіки.
Програма повинна обробляти лише одну подію – натискання кнопки Скласти.
3.1. Створимо обробник натискання кнопки Скласти, двічі клацнувши її образі у вікні Проектувальника.
3.2. Запрограмуємо процес розрахунку результату стандартним способом:
void __fastcallTIWForm1::IWButton1Click(TObject *Sender)
4. Робота з додатком.
Відкомпілюємо і запустимо додаток. Воно виконано у веб-архітектурі, тому може бути розгорнуто на типовому веб-сервері або запущено за допомогою власного сервера веб-застосунків IntraWeb Application Server, що входить у постачання C++Builder.
Коли цей сервер працює, для запуску програми доступна команда Run Ø Execute (Запуск Ø Виконати) у вікні сервера. Відкриється браузер, у вікні якого представлена спроектована форма. За допомогою кнопок попрацюємо з віртуальним калькулятором, який фізично виконує розрахунки на сервері.
Додаток, що вийшов, легко розгортається на існуючих веб-серверах або запускається взагалі без зовнішнього веб-сервера (тільки за допомогою власного сервера IntraWeb). Програма IntraWeb автоматично розпізнає тип браузера користувача (підтримуються браузери Internet Explorer, Netscape, Mozilla та ряд мікробраузерів для мобільних пристроїв) і динамічно підлаштовує свій інтерфейс.
ПРИКЛАД 46.2 Використання технології IntraWeb для роботи з базою даних
1. Створення заготовки програми.
2. Налаштування зв'язку з СУБД.
Для зв'язку програми із СУБД скористаємося технологією dbExpress.
2.1. Додамо до проекту компонент TSQLConnection.
2.2. Виберемо значення IBConnection у його властивості ConnectionName.
2.3. Надамо властивості Connected значення True.
2.4. Додамо на форму набір даних (компонент TSQLDataSet).
2.5. Зв'яжемо набір даних з базою даних через його властивості SQLConnection. Виберемо посилання на екземпляр компонента TSQLConnection.
select * from CUSTOMER
2.7. Перекладемо набір даних активний стан — введемо у властивість Active значення True.
2.8. Додамо до проекту джерело даних (компонент TDataSource), необхідний для стикування набору даних з інтерфейсом користувача .
2.9. Зв'яжемо джерело даних з набором даних, вибравши останній як джерела DataSet.
3. Інтерфейс користувача .
3.1. Розмістимо напроектованої формі компонент IWDBEdit, який дозволить редагувати значення поля таблиці бази даних.
3.2. Додамо компонент IWDBLabel, який відображатиме значення поля таблиці бази даних .
3.3. Розмістимо на формі засіб навігації за набором даних компонент IWDBNavigator.
3.4. Для кожного з компонентів IWDBEdit, IWDBLabel і IWDBNavigator виберемо як DataSource посилання на джерело даних ( екземпляр компонента TDataSource).
3.5. Конкретне редаговане або відображене поле таблиці для компонентів IWDBEdit та IWDBLabel вибирається у властивості DataField (зазначимо, наприклад, поля COUNTRY та CUSTOMER).
46.2. Множинні форми проекту IntraWeb
У проекті IntraWeb допускається одночасне використання кількох форм. Такий режим роботи нагадує звичайні багатовіконні форми Windows. У додатках IntraWeb неможливо створювати модальні вікна - вони не можуть "спливати" в браузері поверх інших вікон і повністю захоплювати керування.
Її можна змінити - поточну форму модуля роблять основною за допомогою методу SetAsMainForm(), що викликається в головному файлі проекту Project1.cpp:
// Unit2.h підключений вручну:
USEFORM(“Unit1.cpp”, IWForm1); /* TIWAppForm: File Type */
USEFORM(“ServerController.cpp”, IWServerController); /* TIWServerControllerBase: File Type */
USEFORM(“Unit2.cpp”, IWForm2); /* TIWAppForm: File Type */
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
// робимо активною другу форму:
catch(Exception &exception)
Для відображення форми програми IntraWeb завжди застосовується метод Show. Відповідна команда записується, наприклад в обробнику натискання кнопки, таким чином:
void __fastcallTIWForm2::IWButton1Click(TObject *Sender)
TIWForm1 *f1 =newTIWForm1((TComponent*)Sender);
Тут із другої, поточної форми TIWForm2, яка зроблена головною методом SetAsMainForm(), викликається (візуалізується у браузері) перша форма TIWForm1. Якщо потрібно повернутися з викликаної форми назад до викликаної, треба використовувати метод Release().
Клас TIWForm не може викликати методи самознищення (на зразок методів Free() або Destroy() класу TObject), тому відкрита форма може звертатися лише до методу Release(). Він активізує форму, яка була активною до поточної. У той самий час метод Release() функціонує як і метод руйнації форми — проміжні значення й тимчасові об'єкти , пов'язані з поточної формою , видаляються з пам'яті . Після виклику цього методу та подальшого звернення до іншого класу форми за допомогою методу Show() всі процедури ініціалізації нової форми (якщо вони передбачені) необхідно виконати заново.
46.3. Масштабованість системи IntraWeb
Для підвищення масштабованості програми IntraWeb та зниження навантаження на процесор при великій кількості користувачів (клієнтських підключень) застосовується низка спеціальних підходів.
46.3.1. Управління станами
Цей підхід корисний не тільки при створенні проектів IntraWeb, але й для будь-яких інших мережних систем. Він аналізує стан програми і обробляє кожен клієнтський запит не спеціально створюваним серверним потоком (новим екземпляром програми IntraWeb), а будь-яким потоком, вільним в даний момент. У реальній роботі процес взаємодії користувача з сервером нетривалий - решту часу користувач зайнятий розгляданням інформації у вікні браузера і вивченням результату. Томунерозумно виділяти для кожного підключення окремий серверний потік, який 99% часу перебуває у стані очікування. Достатньо визначити поточний стан браузера користувача та продовжити з ним роботу з того моменту, коли вона була припинена.
На прикладному рівні управління станами реалізується за допомогою сесій. За умовчанням режим сесій підтримується для кожної програми IntraWeb, і розробнику достатньо організувати запам'ятовування станів клієнтської програми 3 .
Це можна зробити різними способами. Однак застосовувати глобальні змінні , описані поза класом головного додатка TIWForm, неприпустимо - всі відомості слід зберігати всередині екземпляра цього класу .
46.3.2. Організація множинних серверів
46.3.3. Сервери транзакцій
Для балансування навантаження програм IntraWeb зручно використовувати сервери програм і транзакцій . Вони забезпечують автоматичне розподілення запитів по кількох машинах , на кожній з яких може бути встановлена окрема копія програми IntraWeb 4 .
46.4. Додаткові можливості технології IntraWeb
Зазначимо ще кілька корисних компонентів, призначених для вбудовування у сторінку HTML спеціальних об'єктів.
Компонент TIWActiveX дозволяє використовувати елементи ActiveX. Цей компонент дуже зручний при організації взаємодії з альтернативними браузерами (наприклад, з браузерами Firefox і Opera).
1. У чому відмінності технології IntraWeb від інших технологій створення Web-додатків, доступних у системі C++Builder?
2. Як організується взаємодія з користувачем у IntraWeb?
3. Як IntraWeb працює з базами даних?
4. Як організувати підтримку кількох формпрограмі IntraWeb?
5. Які основні підходи до масштабування програм IntraWeb?