Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 8217 / 665 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Лекция 4:

Серверные веб-приложения

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
Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?