Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 5132 / 387 | Оценка: 4.23 / 3.83 | Длительность: 28:12:00
Специальности: Программист, Менеджер
Лекция 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.

Ольга Гафарова
Ольга Гафарова

Добрый день. Подскажите формулы при решении задачи на рис. 2.2 в лекции №2. Закон Ома, какие должны использоваться формулы для I и R

Курс: Основы офисного программирования и документы Excel

Серегй Лушников
Серегй Лушников