Серверные веб-приложения
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 в самых разных областях (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы и т. д.).
Ruby
Ruby — интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Ruby обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, " сборщиком мусора " и многими другими возможностями. Многие особенности синтаксиса и семантики языка Perl заимствованы в Ruby.
Первая общедоступная версия Ruby появилась в 1995 г.
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.
Архитектура 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