Опубликован: 19.07.2010 | Доступ: свободный | Студентов: 1674 / 151 | Оценка: 4.07 / 3.43 | Длительность: 20:59:00
Лекция 9:

Обзор технологий разработки серверных веб-приложений

Аннотация: Показаны основные принципы работы веб-приложений на стороне веб-сервера, дано общее описание стандартов, платформ и технологий, применяемых для разработки серверных веб-приложений, рассмотрены подходы к интеграции приложений в сети Веб.
Ключевые слова: common gateway interface, интерфейс, программа, ПО, файл, язык программирования, консольное приложение, запрос, запуск, передача параметров, выражение, edu, диагностическое сообщение, кроссплатформенность, ruby, программирование, доступ, интерфейс программирования приложений, JScript, архитектура, ISAPI, ASA, интерпретатор, вызывающая программа, internet server, application program interface, веб-сервер, производительность, delphi, MFC, ATL, анализ трафика, веб-сервис, Common Language Runtime, серверный объект, кеш, парсинг, сеанс, очередь, FCL, class library, discovery, пространство имен, механизм безопасности, валидность, веб-форма, глобальные переменные, серверные элементы управления, валидация, атрибут, синтаксис, DataGrid, DataSet, DataList, Smalltalk, ASP.NET MVC, модульное тестирование, test driven development, content management system, CMS, WCM, плагины, JSP, mysql, подключаемый модуль, рубрикатор, таксономия, разграничение доступа, RSS, content management, уровни представления данных, SOA, SOAP, wrapper, ebxml, электронный бизнес, Веб-служба, WSDL, UDDI, Visual Studio .Net, проверка документа, открытый стандарт, универсальные интерфейсы, access protocol, скалярный тип, синтаксический анализ, манифест, узловой, интранет, RMI, CORBA, DCOM

Стандарт CGI

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

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

Благодаря этому интерфейсу для разработки приложений можно использовать любой язык программирования, который располагает средствами взаимодействия со стандартными устройствами ввода/вывода. Такими возможностями обладают также сценарии для встроенных командных интерпретаторов операционных систем.

Выполнение любой программы (в том числе CGI -сценария) можно условно разделить на пять этапов.

  1. Запуск программы.
  2. Инициализация и чтение выходных данных.
  3. Обработка данных.
  4. Вывод результатов выполнения.
  5. Завершение программы.

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

Каждый раз, когда веб-сервер получает запрос от клиента, он анализирует содержимое запроса и возвращает соответствующий ответ:

  • Если запрос содержит указание на файл, находящийся на жестком диске, то сервер возвращает в составе ответа этот файл ;
  • Если запрос содержит указание на программу и необходимые для нее аргументы, то сервер исполняет программу и результат ее работы возвращает клиенту.

CGI определяет:

  • каким образом информация о сервере и запросе клиента передается программе в форме аргументов и переменных окружения ;
  • каким образом программа может передавать назад дополнительную информацию о результатах (например о типе данных) в форме заголовков ответа сервера.

В подавляющем большинстве случаев запуск CGI -сценария осуществляется щелчком на кнопке Submit, сформированной с помощью дескриптора <input тyре = "submit"> , который находится на HTML -странице между <form> и </form> . Не зная назначения атрибутов action и method, невозможно понять, как происходит вызов программы и передача параметров.

Значением атрибута action дескриптора <form> является URL файла, содержащего код CGI -сценария. Так, приведенное ниже выражение означает, что файл с кодом CGI -сценария находится на сервере www.myhp.edu в каталоге cgi-bin в файле script.рl.

<form action="http://www.myhp.edu/cgi-bin/script.pl" method="post">

Сценарии

К основным достоинствам разработки приложений на стороне веб-сервера в форме сценариев можно отнести следующие:

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

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

В плане быстродействия сценарные языки можно разделить на:

  • Языки динамического разбора (например command.com ). Интерпретатор считывает инструкции из файла программы минимально требующимися блоками, и исполняет эти блоки, не читая дальнейший код.
  • Предварительно компилируемые (например Perl ). Вначале считывается вся программа, затем компилируется либо в машинный код, либо в один из внутренних форматов, после чего получившийся код исполняется.

Наиболее распространенными языками разработки серверных сценариев являются Perl, PHP, ASP, Ruby, Python.

ASP

ASP (Active Server Pages) - технология, разработанная компанией Microsoft, позволяющая легко создавать приложения для Веб.

Программирование на ASP дает разработчикам доступ к интерфейсу программирования приложений Internet Information Server с помощью языка сценариев VBScript и JScript.

ASP работает на платформе операционных систем линии Windows NT и на веб-сервере Microsoft IIS.

Архитектура ASP представлена на рис.12.1.

 Архитектура ASP

увеличить изображение
Рис. 12.1. Архитектура ASP

Файлы ASP представляют собой сценарии, интерпретируемые по мере поступления запросов. ISAPI -расширение ASP.DLL связано в IIS с расширениями файлов .asp или .asa.

Порядок обработки таких файлов выглядит следующим образом:

  • ASP.DLL просматривает файлы с указанными расширениями на наличие тегов, обозначающих внедренный код для выполнения на сервер и передает найденный код в Windows Script Host (WSH) .
  • WSH выполняет этот код и возвращает результат файлу ASP.DLL.
  • ASP.DLL передает IIS этот результат и содержимое самого файла ASP.
  • IIS возвращает ответ клиенту, от которого поступил запрос.

Рассмотрим основы синтаксиса ASP.

IIS различает код, выполняющийся на сервере, и содержимое, отправляемое клиенту с помощью ASP.DLL, анализируя файл ASP на наличие начального "<%" и конечного "%>" тегов и выполняя код, расположенный между ними, с помощью WSH.

Рассмотрим пример:

<% Language=VBScript %>
<HTML>
<BODY>
<%
Response.Write("<p>Hello world!</p>")
%> 
</BODY>
</HTML>

В примере первая строка кода <% Language=VBScript %> сообщает о необходимости использовать интерпретатор языка VBScript. Для вставки строки в документ был использован метод Write стандартного объекта Response.

Событие веб-запроса в ASP обрабатывается с помощью следующих объектов:

  • Response. Используется для записи данных в запрос HTTP, возвращаемый клиенту.
  • Application. Содержит параметры и конфигурации по настройке работы ASP для данного веб-сайта.
  • Request. Хранит содержимое HTTP -запроса и обеспечивает вспомогательные функции для обработки данных HTTP -запроса.
  • Server. Содержит информацию о веб-сервере, веб-сайте, а также обеспечивает поддержку вызывающей программы.
  • Session. Представляет собой состояние заданного веб-сеанса с заданным хостом клиентом.

ISAPI

Для веб-сервера IIS (Internet Information Server) . был разработан специальный программный интерфейс для создания приложений расширяющих стандартные возможности веб-сервера.

ISAPI (Internet Server Application Programming Interface) - многозвенный API для веб-сервера IIS.

ISAPI также реализован в виде модуля mod_isapi для веб-сервера Apache. Таким образом, серверные приложения, разработанные для MS IIS могут также выполняться в Apache и других веб-серверах.

В противоположность CGI - ISAPI - приложение загружается в том же адресном пространстве, что и веб-сервер IIS. Это позволяет повысить производительность приложений благодаря сокращению издержек на запуск отдельных процессов. Однако сбой ISAPI - приложения может привести к неустойчивой работе самого веб-сервера. В 6-ой версии IIS имеется возможность запуска приложений в рамках отдельного процесса.

ISAPI включает в себя 2 компоненты: расширения и фильтры.

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

ISAPI приложения могут разрабатываться с помощью любых языков, поддерживающих экспорт стандартных С -функций, например С, С++, Delphi. Для разработки имеется ограниченное число библиотек для разработки ISAPI приложений, например Intraweb -компоненты Delphi Pascal, специальные MFC -классы, специальная С++ библиотека серверных технологий ATL.

К наиболее важным особенностям ISAPI -расширений можно отнести следующие:

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

ISAPI -фильтры необходимы для изменения или совершенствования функциональности IIS. Они обычно работают с IIS -сервером и фильтруют каждый запрос. Фильтры применяются для анализа и модификации входящих и исходящих потоков данных.

Фильтры также как и расширения реализуются в виде DLL файлов.

Обычно ISAPI -фильтры используются для решения следующих задач:

  • Изменение данных в запросе клиента ( URL или заголовков).
  • Управление отображением URL в физические файлы.
  • Управление именами и паролями пользователей при анонимной или базовой аутентификации.
  • Анализ и модификация запросов по завершении аутентификации.
  • Модификация ответа веб-сервера.
  • Ведение журналов и анализ трафика.
  • Реализация собственной аутентификации.
  • Управление шифрацией и сжатием.

Стоит отметить, что существуют реализации в виде ISAPI -расширений для таких инструментальных средств как:

  • ASP (Active Server Pages )
  • ASP.NET
  • ColdFusion
  • Perl ISAPI (Perlis)
  • PHP