Главная » Delphi » Разработка приложений WebSnap

0

Возможности WebSnap

WebSnap не является абсолютно новой  технологией и не предназначен для замены WebBroker и InternetExpress. WebSnap  используется вместе  с этими  технологиями и позволяет относительно просто интегрировать уже существующий  код в новое  при ложение. В следующих разделах перечислены возможности WebSnap.

Несколько Web модулей

В предыдущих версиях Delphi  приложения WebBroker и InternetExpress вынужде ны  были  выполнять все  действия в едином  Web модуле.  Существования нескольких Web модулей не допускалось.  Чтобы добавить модули данных, их приходилось созда вать во время  выполнения вручную, а не автоматически. WebSnap  устраняет это огра ничение и позволяет Web приложению иметь  любое количество Web модулей и моду лей данных.  Приложения WebSnap  состоят из нескольких модулей,  и каждый  модуль представляет собой  отдельную  Web страницу. Это позволяет нескольким разработчи кам независимо работать над различными частями приложения и не беспокоиться о совместимости кода.

Серверные сценарии

WebSnap  позволяет полностью интегрировать серверные сценарии в состав  при ложения, а также  очень  легко создавать мощные объекты сценариев, которые можно использовать для создания и управления HTML в приложении. Компонент класса TAdapter и все его производные обладают возможностью работать со сценариями, а следовательно,  все  они   могут  быть   вызваны  серверными  сценариями,  создавать HTML и клиентские сценарии JavaScript для использования в приложении.

Компоненты класса TAdapter

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

Разнообразие методов доступа

WebSnap  обеспечивает несколько способов обработки обращений к HTTP.  К со держимому Web страницы можно  обратиться по  ее  имени, с помощью компонента TAdapter либо используя WebBroker. Это обеспечивает необходимую гибкость и по зволяет избрать метод  отображения создаваемых Web страниц на основании кон кретных условий.  Возможно, страницу необходимо отобразить в ответ  на щелчок  на кнопке Submit или потребуется создать  список  ссылок,  напоминающий меню и позво ляющий осуществлять навигацию по сайту.

Компоненты генераторов страниц

WebBroker обладает компонентом  класса  TPageProducer (генератор страниц), предназначенным для управления HTML,  его  модификации и обновления содержи мого на основании специальных дескрипторов. InternetExpress расширил эту концеп цию  классом  TMidasPageProducer, а WebSnap  дополнил ее  рядом  новых  мощных элементов управления, способных обращаться как к содержимому экземпляров класса TAdapter, так  и к данным  XSL/XML.  Наиболее мощным  из  новых  классов, произ водных  от TPageProducer, является TAdapterPageProducer, способный создавать текст HTML на основании действий и значений полей  компонентов класса TAdapter.

Управление сеансом

Приложения WebSnap  обладают  автоматическим, встроенным управлением сеан сом; теперь можно  отслеживать все действия пользователя при  обращении к HTTP. Поскольку сам протокол HTTP  не способен сохранять текущее  состояние, создавае мые Web приложения должны  сами следить  за пользователями, оставляя на компью тере    клиента   что нибудь,   способное  идентифицировать   каждого    пользователя. Обычно для этого  используют cookies,  строки URL или скрытые поля  элементов управления. WebSnap  обеспечивает полную поддержку  сеансов, что  позволяет отсле живать  информацию пользователей легко  и просто. Для  этого  WebSnap  использует компонент SessionsService, который содержит значения идентификаторов сеан сов всех пользователей, поэтому  задача  отслеживания обращений отдельных пользо вателей не составляет труда. Вообще  то, это довольно таки сложно  управляемая служ ба, но WebSnap  инкапсулирует все подробности и обеспечивает доступ к информации сеанса как из серверного сценария, так и непосредственно из кода Web приложения.

Служба регистрации (login)

Создаваемые Web приложения зачастую  нуждаются  в системе безопасности, осу ществляющей аутентификацию  пользователей.  WebSnap   автоматизирует  этот   про цесс  с  помощью специализированного  компонента —   адаптера  регистрации  (login adapter). Данный компонент содержит функции, необходимые для правильной орга низации запроса и опознания пользователей согласно выбранной модели  безопасно сти приложения. Он обладает как информацией, необходимой для регистрации, так и возможностями управления сеансом  WebSnap, что позволяет ему обеспечить провер ку прав для каждого  запроса. Кроме  того,  компоненты регистрации обеспечивают ав томатическую проверку периода действия информации регистрации (гарантируя, что время  действия пароля не истекло). Можно сделать так, чтобы  пользователи, которые пытаются получить несанкционированный доступ,  автоматически перенаправлялись на страницу регистрации или в другое место.

Отслеживание пользователя

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

Управление HTML

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

Службы загрузки файлов

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

Создание приложения WebSnap

Как обычно, наилучшим методом изучения новой технологии является разработка приложения с ее использованием. Для начала  создадим  (как это принято) версию приложения WebSnap  “Hello World”.

Проект приложения

Сначала  необходимо добавить в IDE  Delphi  панель  инструментов WebSnap.  Для этого щелкните правой кнопкой мыши в области заголовка окна панели  инструментов IDE  и  выберите  в  появившемся  меню   панель   инструментов  Internet  (рис. 23.1). В результате в главное  окно  IDE будет добавлена панель  инструментов, которая по зволит создавать приложения WebSnap, а также добавлять формы и Web модули.

Рис. 23.7. Страница HTML, ассоциированная  с Web модулемЛистинг 23.1. Код HTML по умолчанию

<html>

<head>

<title>

<%= Page.Title %>

</title>

</head>

<body>

<h1><%= Application.Title %></h1>

<% if (EndUser.Logout != null) { %>

<%      if (EndUser.DisplayName != ”) { %>

<h1>Welcome <%=EndUser.DisplayName %></h1>

<%       } %>

<%       if (EndUser.Logout.Enabled) { %>

<a href="<%=EndUser.Logout.AsHREF%>">Logout</a>

<%      } %>

<%      if (EndUser.LoginForm.Enabled) { %>

<a href=<%=EndUser.LoginForm.AsHREF%>>Login</a>

<%      } %>

<% } %>

<h2><%= Page.Title %></h2>

<table cellspacing="0" cellpadding="0">

<td>

<%     e = new Enumerator(Pages)

s = ”

c = 0

for (; !e.atEnd(); e.moveNext())

{

if (e.item().Published)

{

if (c>0) s += ‘&nbsp;|&nbsp;’

if (Page.Name != e.item().Name)

s += ‘<a href="’ + e.item().HREF + ‘">’ +

e.item().Title + ‘</a>’

else

s += e.item().Title

c++

}

}

if (c>1) Response.Write(s)

%>

</td>

</table>

</body>

</html>Этот  код содержит как обычные дескрипторы HTML,  так и серверный сценарий

JScript.

Обратите внимание на подсветку  HTML в окне IDE. (Цвета можно  устанавливать в меню  Tools, пункт Editor Options, вкладка  Color.) Кроме  того,  можно  установить свой собственный внешний редактор HTML,  например HomeSite, и точно так же обра щаться  к нему через IDE. Сменить редактор HTML  можно, выбрав  в меню Tools пунк ты Environment Options и Internet. Выберите в списке  пункт HTML, а затем,  щелкнув на кнопке Edit, выберите соответствующее действие редактирования, которое будет вы полняться внешним редактором. Теперь, если щелкнуть правой кнопкой мыши в окне редактора кода на странице HTML,  то можно  будет выбирать пункт HTML Editor и вы звать свой редактор.

Следующая  вкладка,   после  вкладки  просмотра HTML,   демонстрирует результат

выполнения сценария HTML. Следующая вкладка демонстрирует внешний вид HTML в окне  Internet  Explorer. Обратите внимание, что  не  все  сценарии выполняются и отображаются в этом  представлении, поскольку  часть  кода зависит от значений вре мени  выполнения. Но  это  позволяет хотя  бы ориентировочно понять, как будет вы глядеть страница, не прибегая к запуску броузера.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии