DB2. Решения по интеграции

         

Web-сервер как краеугольный камень


Краеугольный камень среды Web – это Web-сервер. На сервере есть демон гипертекстового протокола передачи (Hypertext Transfer Protocol daemon -HTTPD), который управляет HTTP-сессиями с браузером в качестве клиентского приложения. Сервер также имеет возможность обслуживать файлы HTML, файлы формата графического обмена (Graphics Interchange Format -GIF) и формата объединенной группы экспертов в области фотографии (Joint Photographic Experts Group – JPEG). Также сервером делаются серверные вставки в Web-страницы при вызове серверных Web-программ, имеются сервисы поддержки масштабируемости и инфраструктуры безопасности хостинга (Хостинг – главенство, выполнение роли ведущего узла. – Примеч. пер.).

Большинство Web-серверов, работающих сегодня, базируются на программе с открытым кодом Apache как компоненте Web-сервера. Apache работает почти во всех ведущих операционных системах. Модульная структура и большой набор возможных конфигураций делают программу весьма подходящей для многочисленных потребностей хоста. IBM поставляет Apache как IBM HTTP-сервер, который может работать на распространенных операционных системах UNIX и Microsoft, на разновидностях Linux, в системах, применяемых реже, таких, как IBM AS/400 и операционная система мэйнфрейма IBM z/OS.

Apache HTTP-серверы поддерживают интерфейсы CGI, FastCGI, препроцессор гипертекста (PHP – Hypertext Preprocessor) и многое другое, доступное через серверные вставки. Большинство Web-серверов поддерживают более чем один программный язык и многочисленные интерфейсы API для Web-программирования.

Web-сервер, по сути, – файловый HTTP-сервер с протоколом управления передачей/протоколом Internet (Transmission Control Protocol Internet Protocol -TCP/IP), в качестве протокола доступа к файлам передающий файлы HTML, GIF и JPEG. С другой стороны, Web-сервер также обеспечивает многочисленные функции безопасности. Во-первых, он реализует возможность ограничения доступа клиентов к Web-серверу. Во-вторых, обеспечивает поддержку протокола защищенных сокетов (Secure Sockets Layer – SSL), взаимную идентификацию между браузером и сервером, основанную на сертификатах SSL с сопровождающим кодированием данных трафика, проходящего между браузером и сервером. В-третьих, он реализует различные алгоритмы аутентификации на уровне HTTP, выдавая приглашения на вход в систему браузеру при просмотре ресурсов Web-сервера с ограниченным доступом.


Конфигурация сети мало зависит от отдельного Web-сервера. Она состоит из многих серверов – это залог масштабируемости и отказоустойчивости. Это означает, что Web-серверы поддерживают кластерную конфигурацию и гибкую систему развертывания. Web-серверы имеют возможности совмещения имен (алиасинг) (посредством чего физическая структура каталога может быть скрыта от пользователя), переадресации унифицированного указателя информационного ресурса (Uniform Resource Locator – URL) на другие Web-серверы, перезаписи URL (для извлечения связей), виртуального хостинга (для управления многочисленными логическими появлениями Web-сервера в инфраструктуре одного физического сервера).

Давайте рассмотрим некоторые из программных интерфейсов Web-сервера.

2.1.1.1. Препроцессор гипертекста РНР

Препроцессор гипертекста РНР – это встроенный в сервер язык скриптов, который воспроизводит структуру языка С в соответствии со стандартом национального института стандартизации США (American National Standards Institute – ANSI). Он реализует возможность объединения команд HTML и РНР в одном файле РНР, подобно серверным страницам Java (Java Server Pages -JSP), рассмотренным ниже.

 

2.1.1.2. Язык TCL

Инструментальный командный язык (Tool Command Language – TCL) (TCL – свободно распространяемый язык сценариев, обладающий возможностью интеграции различных приложений, объектов и устройств, разработанный в корпорации Sun. -Примеч. пер.) – это другой интерпретатор интерфейса программирования с открытым исходным кодом. Он был разработан для обеспечения пользователей мощным языком, чтобы выполнять работу в широком диапазоне, включая системное администрирование. TCL – это язык, ориентированный на работу со строками, с большим набором операций: смена регистра, сравнение с шаблоном, автоматическое преобразование из одних форматов в другие (например, цифровых форматов).

2.1.1.3. Общий шлюзовой интерфейс/Perl



Общий шлюзовой интерфейс (CGI) – один из Web-стандартов для сопряжения внешних приложений с другими ресурсами и выполнения Web-программ. Созданные CGI-программы помещаются в директорию /cgi-bin для их активизации как вызываемых объектов CGI. CGI-программы могут быть написаны на любом языке: C/C++, FORTRAN (Formula Translator), Perl, TCL, UNIX shell, Visual Basic, AppleScript. Тем не менее основной инструмент, использованный для многих существующих CGI-программ, – это язык Perl.



CGI, по существу, работает как программа командного языка (shell) UNIX. Входные данные в программе CGI, Perl или на другом языке – это переменные среды и стандартные входные данные (stdin). CGI-программа возвращает результаты через стандартное выходное устройство (stdout). Perl имеет набор библиотек для взаимодействия процедур с другими ресурсами, включая модуль интерфейса базы данных (DataBase Interface – DBI) для системы управления реляционной базой данных (Relational Database Management System -RDBMS). Переменная QUERY_STRING среды CGI содержит входные данные из URL.

FastCGI разрешает постоянное соединение. Стандартные входные данные содержат информацию POST и GETHTTP (например, из Web-форм).

Следующие переменные среды – это конкретный ответ на запрос, выполненный шлюзовой программой:

• SERVERPROTOCOL – уровень протокола этого интерфейса;

• SERVER_PORT – номер порта;

• REQUEST_METHOD – метод запроса HTTP (например, GET или POST);

• PATH INFO – путь вызова CGI как указано в URL;

• PATH_TRANSLATED – абсолютный путь вызова CGI, после удаления спуфинга (Спуфинг – способность маршрутизатора реагировать на некоторые сетевые запросы локально, без установления соединения с удаленным пунктом. – Примеч. пер.)

службы имен доменов (Domain Name System – DNS);

• SCRIPTNAME – виртуальный путь вызова CGI;

• QUERY_STRING – информация, следующая за знаком «?» в URL, на которую ссылается этот скрипт; служит элементом входных данных в программу CGI;

• REMOTEHOST – хост, делающий запрос;

• REMOTEADDR – IP-адрес хоста, делающего запрос;

• AUTHTYPE – тип аутентификации запроса;

• REMOTEUSER – имя пользователя для аутентификации и персонализации в CGI-программе;

• REMOTEIDENT – если HTTP-сервер поддерживает запросы на комментарии (Requests for Comments – RFC), обозначение 931, то эта переменная установится для имени удаленного пользователя, извлеченного с сервера;

• CONTENTTYPE – для запросов, которые содержат прикрепленную информацию, такую, как HTTP POST и PUT, – это тип данных содержания (контента);



• CONTENT_LENGTH – длина контента, как задано клиентом.

2.1.1.4. FastCGI

CGI имеет строгие ограничения, потому что он вызывает новый процесс на уровне операционной системы для каждого Web-запроса. Операционная система или интерпретатор Perl должны загружать программу каждый раз заново, для обслуживания нового Web URL-запроса. FastCGI концептуально очень похож на CGI, но имеет два существенных отличия:

• процессы FastCGI постоянны: после завершения запроса он ожидает новый запрос, вместо выхода;

• вместо использования переменных среды операционной системы и каналов, протокол FastCGI мультиплексирует (уплотняет) и передает информацию о переменных, стандартные входные данные, выходные данные, сведения об ошибках через отдельное дуплексное соединение; это позволяет программам FastCGI работать на удаленных машинах, использующих ТСР-связи между Web-сервером и приложением FastCGI.

Приложения FastCGI могут выполняться в одиночном или многопоточном подпроцессе. Для приложений с одиночными подпроцессами Web-сервер поддерживает накопитель процессов (если приложение работает локально), чтобы обрабатывать запросы клиента. Размер накопителя конфигурируется пользователем. Многопоточные приложения FastCGI могут устанавливать многочисленные связи с Web-серверами и обрабатывать их одновременно в отдельном процессе. (Например, встроенная многопоточность Java, сборка мусора, базисные элементы синхронизации и платформенная независимость делают его естественным языком реализации для многопоточных приложений FastCGI.)

2.1.1.5. Активные страницы сервера Microsoft (Microsoft Active Server Pages)

Активные страницы сервера (Active Server Pages – ASP) Microsoft имеются в информационном сервере Internet (Internet Information Services – IIS) Microsoft на различных операционных системах Microsoft. ASP обеспечивает интерфейс программирования сервера для VBScript (произошедшего от Visual Basic) и JScript (Microsoft-версия JavaScript), чтобы создавать динамическое Web-содержание на Web-сервере. ASP-программы обеспечивают обработку Web-форм и проверку полей входных данных, а также обработку электронной почты, файлов, доступа к реляционной базе данных через объектные интерфейсы ASP. Доступ к СУРБД через драйверы открытого интерфейса соединений с базами данных (Open Data Base Connectivity – ODBC) управляется интерфейсом технологии доступа к данным (ActiveX Data Objects – ADO). ADO обеспечивает соединение, запрос и обработку классов (Класс – частично или полностью реализованный абстрактный тип данных. -Примеч. пер.), подобно интерфейсу (Java DataBase Connectivity – JDBC), рассмотренному ниже.



Все эти версии Web-программирования имели одни и те же проблемы. Во-первых, они не были машинонезависимыми. Например, решение Microsoft ASP, написанное для Web-сервера Microsoft Windows 2000, не переносится на Web-сервер Sun Solaris. Во-вторых, они были главным образом процедурными, а не объектно-ориентированными, что ограничивает повторное использование. В-третьих, они имели ограниченную область действия. Эти интерфейсы содействовали коммуникации программы браузер-сервер, но не обеспечивали структуры для развертывания Web-программ в устойчивые Web-приложения. Повторное использование путем расчленения на модули и компоненты было невозможно.

Недавняя встреча в местном книжном магазине иллюстрирует это. Джентльмен горевал из-за того, что Web-сайт его корпорации разросся до 150000 строк кода Perl CGI. Он покупал каждую книгу по Perl, которую ему удавалось найти, пытаясь выполнить требования своего босса по разработке вычислительной архитектуры и планирующемуся повторному использованию Perl для сопровождения этого монолитного монстра. Можно было видеть по его лицу, что большой надежды на успех у него не было.

Желание создать новую базу для следующего поколения Web-приложений вызвало революцию в программировании введением общего языка, который был машинонезависимым и для любой операционной системы. Он был назван Java.

 


Содержание раздела