Опубликован: 13.09.2006 | Уровень: для всех | Доступ: свободно
Лекция 11:

Создание интерактивных Web-документов

В этой главе я остановлюсь на создании интерактивных Web-документов. Хотя сегодня подобные документы не столь широко распространены, их значение и роль в общем потоке офисных документов будет только возрастать. Причина этого в том, что, как я уже неоднократно говорил, интрасети все в большей мере становятся средой, в которой ведется совместная работа над документами. Большинство документов, циркулирующих в сети, по своей сути являются интерактивными. В главе 7, где рассматривались вопросы создания интерактивных документов в Excel, отмечалось, что для таких документов характерно:

  • Изменение состояния в результате работы пользователя с документом;
  • Двусторонняя связь с источниками данных.

Эти же свойства характерны и для интерактивных Web-документов.

Различные инструментальные средства используются для построения таких документов, - CGI, Perl, PHP и другие подобные средства. Но, продолжая тему программирования в среде Microsoft Office , я ограничусь рассмотрением инструментальных средств от Microsoft, - вот краткий перечень того, что так или иначе будет затронуто в этой главе: FrontPage 2000, IIS (Internet Information Server), Internet Explorer, ASP (Active Server Pages), VBScript, OWC (Office Web Components), объекты ADO. Из названного подробный разговор шел, пожалуй, только об объектах ADO и OWC, другие же темы затрагивались лишь вскользь. Понятно, что рассмотреть хоть с какой либо степенью подробности затрагиваемые темы мне не удастся, да я и не ставлю такой цели. Я ограничусь примером создания подобного документа. Этот пример и комментарии в процессе создания документа могут служить введением в WEB-программирование. Так что эта последняя глава могла бы служить первой главой новой книги с условным названием "Основы Web-программирования". Главная цель этой главы - показать, что для тех, кто умеет программировать на VBA и создавать интерактивные документы в среде Office 2000, создание интерактивных Web-документов не представляет особых трудностей. Переход от офисного программирования к Web-программированию вполне естественен.

Вместе с тем Web-программирование имеет ряд принципиальных особенностей, затрудняющих как написание, так и отладку соответствующего кода. Прежде чем обсудить эти трудности, сделаю еще одно замечание. Когда я говорил об офисных документах, то всегда отмечал, что документы в среде Microsoft Office могут создаваться без всякого программирования. Офисное программирование начинается тогда, когда документам необходимо придать интерактивность, специфичную для данного документа. Аналогичная ситуация имеет место и при создании Web-документов. Web-мастера и Web-дизайнеры вполне могут создавать Web-документы без всякого программирования. Web-программирование начинается тогда, когда в документ встраиваются различные элементы управления, которые должны реагировать на действия пользователя специфическим для этого документа образом. Если рассматривать Web-документ как книгу, которую читает пользователь, то нет нужды в программировании, даже если страницы просматриваются в произвольном порядке. Если же пользователь определяет не только, какой будет следующая страница, но и влияет на ее содержание, например, требуя, чтобы на странице были размещены нужные ему данные, то тут уже без программирования не обойтись.

Принципиальные особенности Web-программирования

Назову три момента, характерные для Web-программирования:

  • "Многомерный" код.
  • Слабая структурированность.
  • Специфика отладки.

Что я имею в виду, когда говорю о "многомерности" кода? Дело в том, что код, создаваемый программистом, всегда представляет собой линейный текст. Однако исполнение написанного кода в Web-документе, чаще всего, будет разнесено в пространстве и времени. Как правило, у кода будет два исполнителя - Web-сервер на серверной стороне и Обозреватель на клиентской. Прежде чем страница документа будет послана обозревателю, ее текст читается Web-сервером, который находит относящиеся к нему части кода и выполняет его. Страница с результатами этой работы передается по сети клиенту, и там уже обозреватель, установленный на клиентском компьютере, выполняет свою часть работы, исполняя предназначенный ему код и отображая страницу на экране. После этого за дело берется пользователь, работающий за клиентским компьютером, - он выбирает нужные ему данные из списков, заносит требуемую информацию в поля ввода, нажимает командные кнопки и выполняет доступные команды меню. В ходе обработки возникающих событий обозреватель, как правило, обращается к серверу за получением очередной страницы документа, передавая ему одновременно информацию о том, какой должна быть эта страница в соответствии с запросами пользователя. Сервер находит нужную страницу, выполняет относящийся к нему код с учетом полученной им информации. Далее процесс повторяется. Напомню, что в роли Web-сервера я рассматриваю IIS, в роли обозревателя - Internet Explorer, а страницы, выполняемые на серверной стороне, являются ASP-страницами.

Сделаю еще несколько замечаний по поводу деталей этого процесса:

  • В ходе работы, выполняемой на серверной стороне, зачастую создается код, который должен выполнять обозреватель по получению страницы. Так что программирование на стороне сервера часто напоминает "программирование на лету".
  • Хотя IIS и IE оба понимают VBScript, но объекты, доступные им, разные. У сервера свой набор объектов, обозревателю же доступна объектная модель отображаемой страницы с центральными объектами Window и Document.
  • Важным моментом во всем этом процессе является организация передачи нужной информации от обозревателя к серверу и корректный анализ полученной информации на серверной стороне.
  • "Многомерность" кода связана не только с тем, что его текст выполняется двумя различными исполнителями. Когда код выполняется на клиентской стороне, то и здесь не все так просто. Дело в том, что код, исполняемый обозревателем, представляет собой смесь HTML-кода и VBScript-кода. Если быть более точным, то родным языком для обозревателя является HTML-код. Возможность выполнять сценарии, то есть исполнять VBScript-код, появилась позже. Для Internet Explorer такой код формально является HTML-кодом, представленным тегом <script> специального вида, который Internet Explorer умеет распознать и выполнить. В этой модели исполняемый код может быть разбросан по странице вперемешку с другими тегами. К этому следует добавить, что процедуры и функции, которые встречаются в таких тегах, рассматриваются обозревателем, естественно, как описания и не выполняются при просмотре. Они выполняются только при их вызове из выполняемых участков программного кода.
  • Особое место в VBScript-коде занимают процедуры - обработчики событий, связанные с элементами управления и другими объектами, размещенными на странице. Такие процедуры вызываются в момент возникновения события. Они то и обеспечивают интерактивность Web-документов, делая VBScript языком, управляемым событиями.
  • Наряду с HTML все большее распространение получает язык XML, позволяющий определять новые теги, задавая с их помощью определение объектов, используемых в документе. Фактически XML становится основой описания страниц Web-документов. Я, однако, в своих примерах не буду приводить тегов на XML, ограничившись лишь стандартными тегами HTML.

"Многомерный" характер программного кода, конечно, усложняет написание и понимание соответствующего текста. Другим фактором, усложняющим жизнь Web-программистов, является слабая структурированность программного кода. В языке VBScript нет модульности, присущей развитым языкам программирования. Программный код сервера не отделен от программного кода клиентской части. Теги "script" идут вперемешку с другими тегами. Объявления не отделены от исполняемого кода. Ну, уж конечно, нет, как в проектах на VBA, стандартных модулей, модулей - обработчиков событий. Поэтому ответственность за придание нужной структуры в полной мере ложится на программиста, который сам должен придать структуру своему проекту, чтобы ему самому легче было в нем ориентироваться и вносить необходимые изменения, которые не заставляют себя долго ждать. Чуть позже я приведу некоторый набор правил, которыми я пользуюсь в своей работе для придания коду определенной структуры.

Следствием первых двух факторов является и сложность отладки. ASP-страницы, содержащие серверный код отлаживать сложнее, чем HTML-страницы, содержащие только клиентский код. Скажу несколько слов о тех средствах отладки, которые предоставляет редактор VBScript Editor.

Ольга Гафарова
Ольга Гафарова
Непонятен ход решения задачи
Серегй Лушников
Серегй Лушников
Может ли объект Recordset быть потомком объекта Record?
Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Светлана Ведяева
Светлана Ведяева
Россия, Саратов