Стандарт cgi
Круг задач, решаемых Web-сервером, ограничен. В основном он сводится к поддержке НТТР-взаимодействия и доставке клиенту Web-документов. Любые "нестандартные" действия реализуются с помощью специальной программы, которая взаимодействует с веб-сервером и клиентом. Это взаимодействие подчиняется определенным правилам.
Основной набор таких правил - стандарт CGI (Common Gateway Interface - интерфейс общего шлюза), который определяет порядок запуска программы на компьютере-сервере, способы передачи программе параметров и доставки результатов ее выполнения клиенту. Программа, написанная по правилам CGI, называется CGI-сценарием (script CGI), хотя это не означает, что на сервере не может выполняться двоичный файл.
Благодаря этому интерфейсу для разработки приложений можно использовать любой язык программирования, который располагает средствами взаимодействия со стандартными устройствами ввода/вывода. Такими возможностями обладают в также сценарии для встроенных командных интерпретаторов операционных систем.
Выполнение любой программы (в том числе CGI-сценария) можно условно разделить на пять этапов.
Запуск программы.
Инициализация и чтение выходных данных.
Обработка данных.
Вывод результатов выполнения.
Завершение программы.
Различия между CGI-сценарием и консольным приложением касаются первого, второго и четвертого этапов выполнения.
Каждый раз, когда веб-сервер получает запрос от клиента, он анализирует содержимое запроса и возвращает соответствующий ответ:
Если запрос содержит указание на файл, находящийся на жестком диске, то сервер возвращает в составе ответа этот файл;
Если запрос содержит указание на программу и необходимые для нее аргументы, то сервер исполняет программу и результат ее работы возвращает клиенту.
CGI определяет:
каким образом информация о сервере и запросе клиента передается программе в форме аргументов и переменных окружения;
каким образом программа может передавать назад дополнительную информацию о результатах (например о типе данных) в форме заголовков ответа сервера.
Perl
Perl — высокоуровневый интерпретируемый динамический язык программирования
Рисунок 4. Верблюд - талисман языка Perl
Талисманом языка Perl является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.
Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе реализованные при помощи регулярных выражений. Перл унаследовал много свойств от языков C, shell script, awk.
Сегодня основной для разработчиков является пятая версия языка Perl, однако (на некоторых веб-серверах) продолжают использоваться программы (скрипты), написанные на предыдущей — четвёртой — версии (из-за частичной обратной несовместимости). Фактически стандарт языка определяется реализацией интерпретатора.
С 2000 года идет разработка новой (6-ой) версии языка. В отличие от предыдущих версий, разработчики планируют создать четко определенный стандарт языка. В настоящее время существуют экспериментальные компиляторы Perl 6, но продолжается дальнейшая дискуссия о новых правилах.
PHP
Язык PHP (PHP:Hypertext Preprocessor) - один из наиболее популярных сценарных языков ввиду своей простоты, скорости выполнения, богатой функциональности и распространенности исходных кодов на основе лицензии PHP.
PHP состоит из ядра и набора подключаемых расширений: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и др. Возможна разработка своих собственных расширений с их последующим подключением. Хотя и существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя расширений.
Интерпретатор PHP подключается к веб-серверу либо через DLL модуль, созданный специально для этого сервера, либо в виде CGI-приложения.
В настоящее время PHP используется сотнями тысяч разработчиков. Порядка 20 миллионов сайтов сообщают о работе с PHP, что составляет более пятой доли доменов Интернета
Синтаксис PHP подобен синтаксису языка Си. При этом некоторые элементы, как например ассоциативные массивы и цикл foreach, заимствованы из языка Perl.
Для работы программы на PHP не требуется описывать какие-либо переменные, используемые модули, и т.п. Любая программа может начинаться непосредственно с оператора PHP.
Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них:
автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
файловые функции успешно обрабатывают как локальные, так и удалённые файлы;
автоматическая отправка HTTP-заголовков;
работа с cookies и сессиями;
обработка файлов, загружаемых на сервер;
работа с HTTP заголовками и HTTP авторизацией;
работа с XForms;
работа с удалёнными файлами и сокетами.
Python
Python — высокоуровневый язык программирования общего назначения с акцентом на производительность и читаемость кода. Язык Python сочетает в себе минимализм синтаксиса ядра и большой объем полезных функций в стандартной библиотеке.
Python поддерживает структурную, объектно-ориентированную, функциональную, императивную и аспектно-ориентированную парадигмы.
Его основные архитектурные черты:
динамическая типизация
автоматическое управление памятью
полная интроспекция
механизм обработки исключений
поддержка многопоточных вычислений
удобные высокоуровневые структуры данных
Код в Python организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).
Для всех основных платформ Python имеет поддержку характерных для данной платформы технологий (например, Microsoft COM/DCOM). Cуществует даже специальная версия Python для виртуальной машины Java - Jython, что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Питона и даже быть написанными на Python. Несколько проектов обеспечивают интеграцию с платформой Microsoft.NET, основные из которых - IronPython и Python.Net.
Стандартная библиотека Python имеет средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания HTTP-серверов и клиентов, для разбора и создания почтовых сообщений, для работы с XML и т. п. Набор модулей для работы с операционной системой позволяет писать кросс-платформенные приложения. Существуют также модули для работы с регулярными выражениями, текстовыми кодировками, мультимедийными форматами, криптографическими протоколами, архивами, сериализации данных, поддержка юнит-тестирования и др.
Помимо стандартной библиотеки существует множество библиотек, предоставляющих интерфейс ко всем системным вызовам на разных платформах; Имеется большое количество прикладных библиотек для Python в самых разных областях (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы и т. д.).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется свободно под очень либеральной лицензией, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные.
Ruby
Ruby — интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Ruby обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, "сборщиком мусора" и многими другими возможностями. Многие особенности синтаксиса и семантики языка Perl заимствованы в Ruby.
Ruby - полностью объектно-ориентированный язык:
Все данные являются объектами, в отличие от многих других языков, где существуют примитивные типы.
Каждая функция является методом.
Переменные Ruby содержат не сами объекты, а ссылки на них.
Присваивание - это не передача значения, а копирование ссылки на объект.
В Ruby можно добавлять методы не только в любые классы, но и в любые объекты. Например, можно добавить к некоторой строке произвольный метод.
Массивы в Ruby могут автоматически изменять размер, могут содержать любые элементы и язык предоставляет мощные средства для их обработки.
Ruby поставляется с большой стандартной библиотекой. Это, прежде всего, библиотеки для работы с различными сетевыми протоколами на стороне сервера и клиента, средства для работы с различными форматами представления данных (XML, XSLT, YAML, PDF, RSS, CSV, WSDL). Также есть библиотеки для работы с архивами, датами, кодировками, матрицами, средства для системного администрирования, распределенных вычислений, поддержки многопоточности и т. д.
В языке Ruby также реализован простой и удобный механизм для расширения языка с помощью библиотек, написанных на Си, позволяющий легко разрабатывать дополнительные библиотеки. Для унифицированного доступа к базам данных разработана библиотека Ruby DBI.
К недостаткам интерпретатора Ruby можно отнести следующие:
Невысокая скорость работы.
Отсутствие поддержки потоков операционной системы (для Unix-подобных операционных систем есть поддержка процессов ОС), есть в экспериментальной версии 1.9.
Отсутствие встроенной поддержки юникода (возможна работа с использованием дополнительных библиотек, есть в экспериментальной версии 1.9).
Отсутствие компиляции в байткод. (При этом есть возможность компилировать Ruby в Java и .NET байткод, используя компилятор JRuby и Ruby.NET). В экспериментальную версию 2.0 входит виртуальная машина YARV, компилирующая Ruby в байткод и существенно ускоряющая исполнение.
ASP
ASP (Active Server Pages) — технология, разработанная компанией Microsoft, позволяющая легко создавать приложения для Веб.
Программирование на ASP дает разработчикам доступ к интерфейсу программирования приложений Internet Information Server с помощью языка сценариев VBScript и JScript.
ASP работает на платформе операционных систем линии Windows NT и на веб-сервере Microsoft IIS.
Рисунок 5. Архитектура ASP
Файлы ASP представляют собой сценарии, интерпретируемые по мере поступления запросов. ISAPI-расширение ASP.DLL связано в IIS с расширениями файлов .asp или .asa.
Порядок обработки таких файлов выглядит следующим образом:
ASP.DLL просматривает файлы с указанными расширениями на наличие тегов, обозначающих внедренный код для выполнения на сервер и передает найденный код в Windows Script Host (WSH).
WSH выполняет этот код и возвращает результат файлу ASP.DLL.
ASP.DLL передает IIS этот результат и содержимое самого файла ASP.
IIS возвращает ответ клиенту, от которого поступил запрос.
AJAX
AJAX (Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных, веб-страница не перезагружается полностью и веб-приложения становятся более быстрыми и удобными. По-английски AJAX произносится как эй-джэкс, по-русски довольно распространено ая́кс.
AJAX – это концепция использования нескольких смежных технологий, ориентированная на разработку высокоинтерактивных приложения, быстро реагирующих на действия пользователя, выполняющих большую часть работы на стороне клиента и взаимодействующих с сервером посредством внеполосных обращений. По сути AJAX – технология взаимодействия между клиентом и сервером.
Внеполосным обращением называется запрос к серверу, который приводит к оперативному обновлению страницы вместо ее замены. Внеполосный вызов HTTP – это HTTP запрос, который выдается за пределами встроенного модуля, обеспечивающего отправку форм HTTP. Вызов инициируется событием, связанным со страницей HTML и обслуживается компонентом-посредником, обычно объектом XmlHttpRequest.
AJAX применяется для разработки веб-приложений, к которым предъявляются следующие требования:
Приложение должно передавать пользователям свежие данные, полученные с сервера.
Новые данные должны интегрироваться в существующую страницу без ее полного обновления.
Для работы с такими приложениями в браузере, необходимо, чтобы он соответствовал требованиям:
Поддержка посредников (для внеполосных вызовов HTTP). Обычно реализуется в форме объекта XmlHttpRequest.
Поддержка обновляемой модели DOM.
AJAX стал особенно популярен после использования его компанией Google в сервисах Gmail, Google Maps и Google Suggest.
Microsoft .NET предоставляет в распоряжение разработчиков свою реализацию AJAX технологии - ASP.NET 2.0 AJAX.
С архитектурной точки зрения, инфраструктура ASP.NET 2.0 AJAX состоит из двух элементов:
Библиотека клиентских сценариев (реализована на JavaScript). Работает в любом современном браузере.
Набор серверных расширений. Полностью интегрируется с серверными службами и управляющими элементами ASP.NET. Разработчики могут создавать веб-страницы с расширенной функциональностью, используя практически такую же методику, которая используется при разработке серверных страниц ASP.NET.
- Основы www-технологии Введение
- Глава 1 – World Wide Web
- Структура и принципы Всемирной паутины
- Перспективы развития Всемирной паутины
- Способы отображения информации во Всемирной паутине
- Глава 2 – Современные Web технологии
- Протокол http
- Url(UniformResourceLocator)
- Язык гипертекстовой разметки html
- Xml(ExtensibleMarkupLanguage)
- Css(CascadingStyleSheets)
- Клиентские сценарии и приложения
- Javascript
- VbScript
- Java-апплеты
- Xaml и Microsoft Silverlight
- Серверные веб-приложения
- Стандарт cgi
- Заключение
- Список источников