Издателство - Петър - Електронен каталог
Наборът от компоненти IntraWeb се е развивал в системите за разработка на Borland в продължение на много години. С помощта на технологията IntraWeb процесът на създаване на уеб приложения е практически неразличим от процеса на създаване на обикновено Windows приложение. Подготовката на уеб приложението се извършва във визуалния дизайнер с помощта на компоненти, които са външно идентични с компонентите на стандартния панел.
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. Падащо меню ГлавноФорма (Основна форма) персонализира външния вид на потребителската форма за конкретно устройство.
1.4. Нека затворим диалоговия прозорец и да запазим създадения IntraWeb проект. Средата C++Builder ще генерира празен мъниче на бъдещото приложение. Уеб формата за дизайн на приложението е достъпна в прозореца на дизайнера. Това е вариант на страницата, показвана в браузъра на потребителя.
2. Подготовка на потребителския интерфейс.
От гледна точка на приложен програмист създаването на IntraWeb приложение е почти същото като създаването на обикновено приложение. По същия начин се използва Дизайнерът и се програмира логиката за обработка на потребителските действия. Тази логика може да бъде преместена в самостоятелно приложение или алтернативно извлечена от програма на Windows. Например, можете просто да копирате кода за манипулаторите за щракване върху бутони.
2.1. Нека поставим бутон TIWButton от панела IW Standard върху формата.
В свойството Caption задайте надписа Add.
2.2. Нека добавим две текстови полета (компонент IWEdit) и надпис IWLabel.
Ориз . 46.2. Проектиране на уеб формата на приложението IntraWeb
3. Логическо програмиране.
Програмата трябва да обработва само едно събитие - натискане на бутона Add.
3.1. Нека създадем манипулатор за щракване за бутона Fold, като щракнете двукратно върху изображението му в прозореца на дизайнера.
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 в него.
изберете * от КЛИЕНТ
2.7. Нека прехвърлим набора от данни в активно състояние - въведете стойността True в свойството Active.
2.8. Нека добавим източник на данни към проекта (компонента TDataSource), който е необходим за свързване на набора от данни с потребителския интерфейс.
2.9. Свържете източник на данни с набор от данни, като изберете последния в свойството източник на DataSet.
3. Потребителски интерфейс.
3.1. Ще публикуваме накомпонента IWDBEdit в проектираната форма, което ще ви позволи да редактирате стойността на полето на таблицата на базата данни.
3.2. Нека добавим компонента IWDBLabel, който ще показва стойността на полето на таблицата на базата данни.
3.3. Нека поставим върху формуляра инструмент за навигация в набор от данни — компонента IWDBNavigator.
3.4. За всеки от компонентите IWDBEdit, IWDBLabel и IWDBNavigator изберете препратка към източника на данни (екземпляр на компонента TDataSource) в свойството DataSource.
3.5. Конкретното поле на таблицата, което трябва да се редактира или показва за компонентите IWDBEdit и IWDBLabel, се избира в свойството DataField (посочваме например полетата ДЪРЖАВА и КЛИЕНТ).
46.2. Множество формуляри за IntraWeb проекти
В IntraWeb проект могат да се използват няколко формуляра едновременно. Този режим на работа наподобява обичайните многопрозоречни форми на Windows. Не е възможно да се създават модални прозорци в приложенията IntraWeb - те не могат да "плават" в браузъра върху други прозорци и напълно да поемат контрола.
Може да се променя - текущата форма на модула се прави основна с помощта на метода SetAsMainForm(), извикан в основния файл на проекта Project1.cpp :
// Unit2.h е свързан ръчно:
USEFORM(“Unit1.cpp”, IWForm1); /* TIWAppForm: Тип файл */
USEFORM("ServerController.cpp", IWServerController); /* TIWServerControllerBase: Тип файл */
USEFORM(“Unit2.cpp”, IWForm2); /* TIWAppForm: Тип файл */
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
// направи втората форма активна:
catch(Изключение &изключение)
Методът Show винаги се използва за показване на формуляр за приложение IntraWeb. Съответната команда е написана например в манипулатора за щракване на бутон, както следва:
анулира __бързо повикванеTIWForm2::IWButton1Click(TObject *Sender)
TIWForm1 *f1 =новTIWForm1((TComponent*)Подател);
Тук от втората текуща форма 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 и другите технологии за създаване на уеб приложения, налични в системата C++Builder?
2. Как е организирано взаимодействието с потребителите в приложението IntraWeb?
3. Как приложението IntraWeb работи с бази данни?
4. Как да организираме поддръжка за множество формуляри вIntraWeb приложение?
5. Какви са основните подходи за мащабиране на IntraWeb приложения?