Принципиальные особенности 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.
"Многомерный" характер программного кода, конечно, усложняет написание и понимание соответствующего текста. Другим фактором, усложняющим жизнь Web-программистов, является слабая структурированность программного кода. В языке VBScript нет модульности, присущей развитым языкам программирования. Программный код сервера не отделен от программного кода клиентской части. Теги "script" идут вперемешку с другими тегами. Объявления не отделены от исполняемого кода. Ну, уж конечно, нет, как в проектах на VBA, стандартных модулей, модулей - обработчиков событий. Поэтому ответственность за придание нужной структуры в полной мере ложится на программиста, который сам должен придать структуру своему проекту, чтобы ему самому легче было в нем ориентироваться и вносить необходимые изменения, которые не заставляют себя долго ждать. Чуть позже я приведу некоторый набор правил, которыми я пользуюсь в своей работе для придания коду определенной структуры.
Следствием первых двух факторов является и сложность отладки. ASP-страницы, содержащие серверный код отлаживать сложнее, чем HTML-страницы, содержащие только клиентский код. Скажу несколько слов о тех средствах отладки, которые предоставляет редактор VBScript Editor.