Введение в технологии создания Интернет-узлов

Способы организации активных web-серверов

Показывать лекцию целиком

Программы CGI

CGI-интерфейс

CGI-интерфейс (Common Gateway Interface – Общий шлюзовой интерфейс) — одно из первых решений, созданных для доставки динамической web-информации. CGI он до сих пор очень популярен на платформе UNIX. CGI-приложения — это программы, исполняемые на Web-сервере и обычно используемые для предоставления динамической Web-информации.

Аббревиатура CGI (Common Gateway Interface) обозначает часть Web-сервера, которая может взаимодействовать с другими программами, выполняющимися на этом же Web-узле, и в этом смысле является шлюзом (gateway - шлюз) для передачи данных, полученных от клиента, программам обработки, таким как СУБД, электронные таблицы, и др. CGI включает общую среду (набор переменных) и протоколы для взаимодействия с этими программами. Программы CGI пользуются этим интерфейсом для получения (через протокол HTTP) информации от пользователя, для ее обработки и отправки обратно в виде нового документа HTML, ссылки на существующий документ или на другой объект.

Программа CGI

Программа CGI это обычное консольное приложение, работающее в среде операционной системы сервера Web и осуществляющее обмен данными через стандартные потоки ввода и вывода. Такое приложение загружается в оперативную память сервера и запускается только по явному запросу пользователя, когда к нему выполняется обращение из документа HTML. Окончив обработку запроса пользователя, программа CGI завершает свою работу и выгружается из памяти сервера.

Программа CGI работает на сервере как отдельный процесс. В рамках этого процесса она способна, в частности, обращаться к базам данных для выборки или обновления информации.

(рис 6.1) Формирование динамических документов HTML с помощью CGI

Последовательность работы CGI состоит из следующих этапов:

  • Получение Web-сервером информации от клиента-браузера. Для передачи данных Web-серверу используются формы. Форма задается в HTML-документе при помощи тэгов <form> … </form> и состоит из набора полей ввода, отображаемых браузером в виде графических элементов управления: селекторных кнопок, опций, строк ввода текста, управляющих кнопок и т. д. Обычно одна из кнопок предназначена для завершения ввода. Когда пользователь заполнит всю форму, он нажимает эту кнопку, и данные из полей формы передаются программе CGI.
  • Анализ и обработка полученной информации. Данные, извлеченные из HTML-формы, передаются для обработки CGI-программе. Они не всегда могут быть обработаны CGI-программой самостоятельно. Например, они могут содержать запрос к базе данных. В этом случае CGI-программа на основании полученной информации формирует запрос к ядру СУБД, выполняющейся на том же или удаленном компьютере.
  • Создание нового HTML-документа и пересылка его браузеру. После обработки полученной информации CGI-программа создает динамический (виртуальный) HTML-документ, или формирует ссылку на уже существующий документ и передает результат браузеру.
  • CGI программа, имеет свою специфику, заключающуюся в том, что она, как правило, генерирует HTML-документ, посылаемый клиенту в виде ответа сервера. Ответ сервера, так же как и запрос клиента, имеет определенную структуру. Он состоит из следующих трех частей:

  • Строка состояния, содержащая три поля: номер версии протокола HTTP, код состояния и краткое описание состояния, например:
    НТТР/1.0 200 ОК            # Запрос клиента обработан успешно
    НТТР/1.0 404 Not Found     # Документ по указанному адресу не существует
  • Заголовки ответа, содержащие информацию о сервере и о возвращаемом HTML-документе, например:
    Date: Mon, 26 Jul 1999 18:37:07 GMT     # Текущая дата и время
    Server: Apache/1.3.6                    # Имя и номер версии сервера
    Content-type: text/html                 # Описывает медиа-тип содержимого
  • Содержимое ответа — HTML-документ, являющийся результатом выполнения CGI-программы.
  • CGI-программа передает результат своей работы — HTML-документ — серверу, который возвращает его клиенту. Шлюз осуществляет свой вывод в стандартный поток вывода. Этот вывод может представлять собой или документ, сгенерированный шлюзом, или инструкции серверу, где получить необходимый документ. При этом сервер не анализирует и не изменяет полученные данные, он может только дополнять их некоторыми заголовками, содержащими общую информацию (например, текущая дата и время) и информацию о самом себе (например, имя и версия сервера).

    В зависимости от метода данные формы передаются в CGI-программу или через стандартный ввод ( POST ), или через переменную среды QUERY_STRING ( GET ). Помимо этих данных CGI-программе доступна и другая информация, поступившая от клиента в заголовках запроса или предоставленная Web-сервером.

    Информация шлюзам передается в следующей форме:

    имя=значениеимя1=значение1..,

    где имя- имя переменной (из оператора FORM, например), и значение - ее реальное значение. В зависимости от метода, который используется для запроса, эта строка появляется или как часть URL (в случае метода GET ), или как содержимое HTTP запроса (метод POST ). В последнем случае, эта информация будет послана шлюзу в стандартный поток ввода.

    Данные формы поступают в CGI-программу в закодированном виде, поэтому в качестве первого шага обработки CGI-сценарий должен выполнить декодирование полученной информации.

    Таким образом, декодирование данных сводится к следующей последовательности манипуляций со строкой:

  • замена каждой группы %hh, состоящей из шестнадцатеричного ASCII-кода hh с префиксом %, на соответствующий ASCII-символ;
  • замена символов + пробелами;
  • выделение отдельных пар имя=значение, разделенных ограничителем ;
  • выделение из каждой пары имя— значение имени и значения соответствующего поля формы.
  • Perl

    CGI-программа может быть написана на любом языке программирования, имеющем средства обмена данными между программами.

    Для создания абсолютно мобильных программ CGI лучше всего воспользоваться языком Perl. Интерпретаторы этого языка созданы практически для всех операционных систем. Этот язык высокого уровня содержит многие функции, упрощающие создание программ CGI. В сети Internet доступны (причем бесплатно) версии интерпретатора Perl для различных платформ (в том числе и для Microsoft Windows NT), разнообразная документация и примеры программ.

    Программа на языке Perl представляет собой последовательность операторов, которые интерпретатор языка выполняет при каждом запуске без преобразования исходного текста программы в выполняемый двоичный код. По этой причине CGI-программы называют также CGI-сценариями или CGI-скриптами.

    PHP

    Для динамического формирования документов HTML используется также технология PHP (Hypertext Preprocessor). PHP часто еще называют препроцессором гипертекста (Hypertext Preprocessor). По сути PHP серверный (выполняющийся на стороне сервера) мультиплатформный язык описания сценариев, встраиваемый непосредственно в HTML-код.

    Основными сферами применения данной технологии являются создание серверных приложений и интерфейсов к базам данных.

    Приложения PHP встраиваются в документы HTML в качестве сценариев, подобно сценариям JavaScript, однако, в отличие от JavaScript, сценарии PHP выполняются не пользовательским агентом, а специальной программой – проигрывателем сценариев PHP, которая является приложением CGI и запускается сервером. Пользовательский агент получает результат выполнения запрошенного им сценария и не может получить доступ к исходному коду самого сценария.

    До того, как сервер пересылает опубликованный файл браузеру, его просматривает препроцессор-интерпретатор. Для этого файлы имеют специальное расширение .phtml или php3. Если страница содержит помимо HTML php-код, то он выполняется и результат отправляется браузеру.

    Преимуществами PHP является бесплатность и кроссплатформенность. Недостаток – плохая масштабируемость. PHP непригоден для использования в сложных проектах. Это связано со следующими особенностями:

  • падение производительности при обработке больших скриптов;
  • PHP – интерпретируемый язык и уступает по скорости работы компилируемым технологиям;
  • в php3 нет поддержки сессий, как, например, в ASP.
  • ISAPI

    Если Web-сервер создан на базе Microsoft Internet Information Server, вместо программ CGI можно использовать приложения ISAPI, реализованные в виде библиотек динамической загрузки DLL, что позволяет повысить производительность и масштабируемость. Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI.

    Расширения ISAPI

    Расширения ISAPI выполняют те же функции, что и программы CGI: обычно они применяются для обработки клиентских запросов и возвращения ответа в формате HTML.

    Каждый раз, когда удаленный пользователь обращается к расширению CGI, на сервере Web запускается программа, которая выполняется как отдельный процесс, причем в собственном адресном пространстве. На запуск процесса требуется время, и если ваш сервер пользуется популярностью, то программы CGI могут полностью его загрузить. В результате увеличится время реакции сервера, что может оттолкнуть от него пользователей.

    Для повышения производительности в некоторых Web-серверах (в частности, Microsoft Internet Information Server) используется другой способ создания расширений. Расширение создается как библиотека динамической загрузки DLL с использованием программного интерфейса ISAPI (Internet Server API).

    (рис 6.2) Функционирование ISAPI-расширений

    Когда такое расширение активизируется в первый раз, оно загружается в адресное пространство процесса Web-сервера и начинает свою работу. В памяти всегда находится только одна копия соответствующей библиотеки DLL, поэтому при одновременном обращении к расширению ISAPI нескольких пользователей системные ресурсы расходуются более экономно, и, кроме того, не тратится время на дополнительные загрузки расширения.

    Программирование приложений ISAPI представляет собой более сложную задачу, нежели создание программ CGI. Поскольку такие приложения всегда работают в мультизадачном режиме, необходимо обеспечить синхронизацию доступа к критичным ресурсам. Ошибки в приложениях ISAPI могут привести к аварийной остановке сервера Web, а вот при использовании программ CGI это маловероятно.

    ISAPI-расширения явно указываются в URL-адресе, отправляемом на IIS-сервер: Например: http://localhost/sayhelloisapi/sayhelloisapi.dll

    ISAPI-расширение можно вызывать с параметрами, которые позволят одному компоненту выполнять разные задачи.

    Сервер IIS версии 4.0 и старше позволяет загружать программы ISAPI в отдельное адресное пространство. Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI, загруженной в отдельное адресное пространство не приводит к полной остановке Web-сервера.

    В результате расширения ISAPI работают быстрее по сравнению с программами CGI, поскольку для программ CGI для каждого пользователя приходится запускать отдельный процесс.

    Однако приложения ISAPI приходится отлаживать намного тщательнее, чем программы CGI. Так как приложение ISAPI работает в адресном пространстве Web-сервера, ошибка в приложении ISAPI способна вызвать аварийное завершение работы Web-сервера.

    Фильтры ISAPI

    Фильтры ISAPI, так же как и расширения ISAPI, реализованы в виде библиотек динамической загрузки DLL и способны контролировать весь поток данных между браузером и Web-сервером на уровне протокола HTTP.

    (рис 6.3) Функционирование ISAPI-фильтров

    ISAPI-фильтры никогда не вызываются явно — IIS-сервер обращается к ним в ответ на определенные события в процессе выполнения запроса:

  • на завершение обработки сервером предоставленных клиентом заголовков;
  • на завершение сервером процедуры аутентификации клиента;
  • на сопоставление сервером логического URL-адреса физическому;
  • до начала пересылки "сырых" данных от клиента на сервер;
  • на завершение пересылки "сырых" данных от клиента, но до начала их обработки на сервере;
  • на регистрацию информации сервером в журнале;
  • на завершение сеанса.
  • Благодаря этому их можно применять для решения таких задач, как динамическая перекодировка и шифрование данных, создание дополнительных процедур аутентификации пользователей, сбор статистической информации об использовании ресурсов сервера и т. д.

    ISAPI-расширения часто создаются с использованием ISAPI-классов библиотеки MFC (Microsoft Foundation Class Library). Это значительно упрощает разработку ISAPI-расширений.

    Активные страницы ASP

    Active Server Pages (ASP) — это серверная среда для разработки и выполнения динамических интерактивных веб-приложений.

    Технология ASP предполагает интенсивное использование серверных сценариев и объектов СОМ для создания активных Web-серверов.

    Языки программирования, используются для создания больших и сложных программных комплексов. Языки написания сценариев используются для создания программ ограниченных возможностей, называемых сценариями, которые выполняют функции web-узла на web-сервере или в браузере. В отличие от сложных языков программирования, языки написания сценариев интерпретируются: инструкции последовательно выполняются промежуточной программой, называемой интерпретатором команд. Хотя интерпретация уменьшает эффективность выполнения, языки написания сценариев просты для изучения и обеспечивают большие возможности. Сценарии могут быть встроены в HTML-страницы для форматирования содержимого или могут реализовывать компоненты COM, заключающие в себе бизнес-логику.

    Файл Active Server Pages (ASP) представляет собой текстовый файл с расширением ".asp". Этот файл может содержать текстовые данные, тэги языка HTML и серверные сценарии.

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

    Когда пользователь обращается к странице ASP, Web-сервер вызывает веб-сервер расширение ASP для обработки указанного в запросе файла, которое интерпретирует расположенный в ней сценарий. При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю.

    В ASP отсутствует ориентация на конкретный язык программирования, поэтому знакомства с любым языком сценариев (VBScript, JScript или PERL) будет достаточно для того, чтобы работать с Active Server Pages. Более того, на страницах ASP допускается использование любого языка сценариев, для которого был установлен COM-совместимый обработчик сценариев. Обработчик сценариев — это программа, которая обрабатывает команды, записанные на определенном языке. В состав ASP входят обработчики сценариев VBScript и JScript, но имеется дополнительная возможность установки обработчиков для языков PERL, REXX и Python, которые могут быть получены от независимых разработчиков. Обработчик сценариев представляет собой расширение ISAPI, которое физически является динамически подключаемой библиотекой ASP.DLL. ASP.DLL просматривает файлы .asp на предмет наличия тэгов, обозначающих внедренный код для выполнения на сервере. ASP.DLL передает код сценария в Windows Script Host (WSH). WSH выполняет этот код и возвращает ответ файлу ASP.DLL, который, в свою очередь, передает IIS результат выполнения сценария и содержимое самого файла ASP. IIS возвращает ответ программному обеспечению, от которого поступил запрос.

    (рис 6.4) Механизм обработки запроса на ASP-страницу

    Пример:

    <HTML>
    <HEAD>
    <TITLE>Hello ASP World</TITLE>
    </HEAD>
    <BODY>
    <%
    Dim x
    For x=1 to 5
    Response.Write("<FONT size="  x)
    Response.Write(">Hello ASP World</FONT> <BR>")
    Next
    %>
    </BODY>
    </HTML>

    Средствами технологии ASP можно создавать интерактивные Web-страницы, не используя расширения CGI или ISAPI, что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам.

    Пользователь не может каким-либо образом получить содержимое страницы ASP, так как Web-сервер отправляет ему не саму страницу, а результат ее интерпретации. Таким образом, логика работы страницы скрыта от пользователей.

    ASP поддерживает технологию работы со сценариями Windows Script Components. Она позволяет поместить все сценарные процедуры, выполняющие бизнес-логику, в COM-компоненты. Эти компоненты допускают повторное использование, и могут работать как в web-приложениях, так и в других программах, построенных по технологии COM.

    ASP поддерживает новую служебную программу шифрования сценариев, поставляемую с MicrosoftVisual Basic Scripting Edition (VBScript) и Microsoft® JScript 5.0. Имеется возможность шифровать как клиентские, так и серверные сценарии, в результате чего тексты сценариев будут отображаться бессмысленной последовательностью ASCII-символов. Зашифрованные сценарии расшифровываются обработчиком сценариев во время их выполнения, поэтому нет необходимости в использовании отдельной программы расшифровки. Несмотря на то, что это не является полностью безопасным решением, технология не позволяет большинству обычных пользователей скопировать или просмотреть сценарий.

    Серверный сценарий, встроенный в страницу ASP, способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects (ADO) — простую и понятную процедуру. Если возникнет необходимость реализовать собственную бизнес-логику, имеется возможность создания новых объектов СОМ или использования объектов СОМ сторонних разработчиков.

    Недостатками ASP является:

  • отсутствие гибкой, мощной и масштабируемой среды программирования.
  • необходимость размещать команды сценария в HTML. Кроме снижения производительности из-за смены контекста при каждом входе и выходе из раздела сценария, смешанный код в "сыром" HTML усложняет деление на представление и само приложение.
  • ASP.NET

    ASP.NET – это среда, работающая на Internet Information Server (IIS), упрощающая написание кода для создания HTML-страниц.

    Особенностями ASP.NET являются:

  • .NET Framework — архитектура, облегчающая проектирование традиционных и Web-приложений. В ASP.NET вместо интерпретации исходной страницы при каждом обращении клиента страница компилируется, преобразуясь в формат промежуточного языка MSIL (Microsoft Intermediate Language) лишь при первом обращении. После компиляции страницы в MSIL JiT-компилятор (Just-In-Time compiler) преобразует MSIL в машинный код.
  • Единый язык среды исполнения (Common Language Runtime) обеспечивает единый набор сервисов для всех языков в ASP.NET. Наличие единого набора типов для всех языков дает преимущество при комбинировании ASP-сценариев с СОМ-обьектами.
  • В ASP.NET обеспечивается повышенная производительность с помощью компилируемых языков.
  • Visual Basic .NET — это новая версия Visual Basic с более четким синтаксисом.
  • Visual Studio .NET — среда разработки, которая поддерживает быструю разработку (Rapid Application Development, RAD) серверных приложений.
  • Web-формы позволяют осуществлять визуальное конструирование web-приложений с использованием обработчиков событий в стандартных элементах управления HTML.
  • Web-сервисы с поддержкой XML позволяют разработчикам создавать сервисы и предоставлять доступ к ним по протоколам, являющимся отраслевым стандартом.
  • Microsoft .NET представляет собой инфраструктуру для решения общих задач, возникающих при разработке Интернет-приложений. Инфраструктура MS.NET состоит из операционной системы Windows 2000/2003, серверных корпоративных продуктов, XML-сервисов и платформы разработки .NET Framework.

    Достоинства .NET

  • Единая программная модель. В отличие от существующего подхода, когда одни функции ОС доступны через процедуры динамически подключаемых библиотек (DLL), а другие — через СОМ-объекты, весь прикладной сервис представлен общей объектно-ориентированной программной моделью.
  • Отсутствие проблем с версиями. При традиционном программировании для Windows существует проблема совместимости версий. Она возникает, когда компоненты, устанавливаемые для нового приложения, заменяют компоненты старого приложения. Архитектура .NET Framework позволяет изолировать прикладные компоненты, так что приложение всегда загружает компоненты, с которыми оно разрабатывалось и тестировалось.
  • Упрощение разработки, развертывания и удаления. Компоненты .NET Framework (их называют просто типами) не связаны с реестром. Установка приложений .NET Framework сводится к копированию файлов в нужные каталоги, а их удаление – к удалению файлов.
  • Кроссплатформенность. При компиляции кода для .NET Framework компилятор генерирует код на языке CIR (common intermediate language), а не традиционный код, состоящий из процессорных команд. При исполнении CLR транслирует CIL в команды процессора. Поскольку трансляция выполняется в период выполнения, генерируются команды конкретного процессора. Это значит, что можно запускать приложение для .NET Framework на любой машине, где работает версия CLR и FCL: с архитектурой x86, IA64, AMD64, PowerPC и т. д.
  • Интеграция языков программирования. СОМ позволяет разным языкам взаимодействовать. .NET Framework позволяет разным языкам интегрироваться, т. е. одному языку использовать типы, созданные на других языках. Например, CLR позволяет создать на C++ класс, производный от класса, реализованного на Visual Basic. CLR делает возможным интеграцию языков, так как она определяет общую систему типов (Common Type System, CTS), которую должны использовать все языки, ориентированные на CLR. Общеязыковая спецификация (Common Language Specification, CLS) определяет правила, которым должны следовать разработчики компиляторов, чтобы их языки интегрировались с другими.
  • Автоматическое управление памятью (сбор мусора). Одна из самых распространенных проблем, связанных с производительностью системы — небрежное отношение к освобождению ресурсов, что может привести к некорректному выполнению программы в непредсказуемый момент. CLR автоматически отслеживает использование ресурсов, гарантируя, что не произойдет их утечки.
  • Безопасность. В модели безопасности доступа к коду .NET имеется возможность явного задания прав доступа для различных фрагментов кода.

    Средства разработки для .NET

    Для .NET существуют следующие средства разработки:

  • Среда MS Visual Studio .NET 2005 включает средства управления проектами, редактор исходного текста, конструкторы пользовательского интерфейса, помощники, компиляторы, компоновщики, инструменты, утилиты, документацию и отладчики. Существует также бесплатный программный продукт Visual Web Developer.
  • .NET Framework SDK. Он распространяется бесплатно и включает компиляторы всех языков, набор утилит и документацию. С помощью этого SDK можно создавать приложения для .NET Framework без Visual Studio .NET. Потребуется лишь редактор текстов и средство управления проектами.
  • Inprise Delphi 2005 Enterprise.
  • Пример пустой ASP.NET-страницы

    Рассмотрим пример пустой ASP.NET-страницы.

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
    </body>
    </html>

    Проанализируем ее содержимое.

    <%@ Page Language="VB" %>. Тег <% всегда предназначается для интерпретации ASP-кода. Директива Page всегда присутствует на странице aspx. Ее атрибут Language — это указание, что в скриптах данной страницы будет использоваться VB.net, а могли бы C#, C++.net или J#. CodeFile — имя файла с отделенным кодом (code-behind). Inherits — класс, определенный в том файле, от которого наследуется класс страницы.

    Одновременно будет создан и файл Default.aspx.vb. ASP.NET использует технологию разделения кода. Сама форма находится в файле Default.aspx, а файле Default.aspx.vb находится класс страницы на языке vb.net. Таким образом, дизайн страницы может быть изменен не затрагивая кода страницы, что позволяет разделить ответственность за внешний вид и работу страницы между дизайнером и программистом.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    Существуют разные стандарты HTML и xHTML. Более поздние стандарты предъявляют более строгие требования.

    Например, хHTML 1.1 не разрешает пользоваться <br> и другими простыми тегами без закрывающей косой черты <br/>. В то же время старые стандарты не поддерживают новые теги.

    Visual Studio 2005 во всех страницах использует стандарт XHTML 1.0 Transitional. Этот стандарт требует наличия атрибута xmlns в теге <html>:

    <html xmlns="http://www.w3.org/1999/xhtml" >

    — ссылки на сайт с описанием стандарта.

    <form id="form1" runat="server">

    Этот тег дает указание компилятору обрабатывать элементы управления страницы. Данный тег имеет свойство runat, для которого установлено значение "server" (других значений не бывает). При использовании этого свойства элемент управления обрабатывается компилятором, а не передается браузеру "как есть".

    Обработка ASP.NET-страницы

    При установке .NET, в соответствующих директориях C:\WINDOWS\Microsoft.NET\Framework\ помещается файл aspnet_isapi.dll. Это — ISAPI-расширение, предназначенное для:

  • получения запросов, адресованных ASP .NET-приложениям ( *.aspx *.asmx и т.д.),
  • для создания рабочих процессов aspnet_wp.exe, обрабатывающих запросы.
  • IIS или встроенный в Visual Studio Cassini используют это расширение для обработки обращений к страницам с расширением aspx.

    Этот модуль разбирает ( parse ) содержимое страниц aspx вместе с файлом отделенного кода и генерирует класс на языке страницы с объектом Page. Страница aspx отличается от обычной HTML-страницы наличием серверных элементов управления, которые описываются специальными тегами. Каждому тегу элемента управления соответствует свой член класса страницы.

    Например, при добавлении на страницу компонента Label добавляется следующий код:

    <asp:Label ID="Label1" runat="server" 
    Text="Label"></asp:Label>

    который преобразуется в

    Dim ctrl = New System.Web.UI.WebControls.Label()

    Основная задача объекта Page — посылка HTML-кода в выходной поток. Этот класс компилируется в библиотеку DLL, которая загружается в процесс web-сервера. Последующие запросы к странице также обрабатывает DLL, если исходный код страницы не меняется.

    Вернуться к учебному плану