М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Кафедра асвк диплом

Вид материалаДиплом

Содержание


Серверные технологии программирования
JSP и сервлеты
Сравнение различных серверных технологий программирования динамических сайтов
Подобный материал:
1   2   3   4   5   6   7   8   9   10   11

Серверные технологии программирования



В общем случае схему взаимодействия между веб-сервером, серверными сценариями и СУБД можно представить следующим образом:



Запросы


Интернет

Браузеры

посетителей

сайта

Рис 1: Серверные технологии

CGI



Технология CGI (Common Gateway Interface) была первым средством создания динамических страниц [2.2]. CGI представляет собой протокол, определяющий три основных способа передачи информации из сервера в некоторую "внешнюю" по отношению к веб-серверу программу, называемую CGI-сценарием или CGI-скриптом, и один способ передачи информации из программы на сервер. Далее предлагается рассмотреть вкратце этот протокол.

Три способа получения данных от сервера CGI-сценарием включают в себя:
  • переменные среды окружения, т.е. переменные, значения которых определяются сервером и к которым имеет доступ программа. Они содержат различную информацию о самом сервере (версию программного обеспечения веб-сервера, поддерживаемые протоколы и т.д.), о программе (например, путь к файлу, содержащему выполняемый в данный момент скрипт) и о посетителе сайта (адрес, версию клиентского программного обеспечения);
  • стандартный ввод, который используется при отправке данных из веб-формы методом POST;
  • командная строка, используемая достаточно редко - как правило, для передачи HTML-запросов ISINDEX или координат курсора при работе с "картами изображений" (image maps).

Передача информации из CGI-сценария на сервер осуществляется путем записи в стандартный поток вывода. В общем случает сценарий генерирует HTML-код страницы, которая и выдается пользователю [2.2].

Важно отметить, что протокол CGI не фиксирует средства, с помощью которых создается CGI-скрипт, а лишь накладывает свои требования на формат получения и вывода данных программой. При соблюдении этих ограничений CGI-скриптом может быть любой исполняемый файл на любом языке программирования. Согласно данным, приведенным в [2.2], традиционно CGI-сценарии создаются с использованием объектно-ориентированного языка Perl (Practical Extraction and Report Language), вторым по популярности языком программирования для CGI является C, а после него идут Visual Basic, AppleScript и языки программирования командных процессоров Unix.

Как уже говорилось ранее, технология CGI была первой технологией для работы с динамическим контентом (разработка повсеместно используемой сейчас версии CGI 1.1 относится к 1995 г.), и поэтому она не лишена определенных недостатков. Основным недостатком модели CGI можно считать довольно низкую производительность, т.к. при каждом поступлении запроса от посетителя сервер инициирует новый процесс запуска сценария, что является весьма ресурсоемкой операцией.

Говоря о программировании CGI-скриптов на языке Perl, стоит отметить, что этот язык создавался не как средство для разработки Интернет-приложений, а как многофункциональный язык сценариев ОС UNIX. Поэтому он перегружен функциями, которые обычно не употребляются в сценариях обработки данных, полученных через веб-формы; в то же время, в нем отсутствуют такие часто используемые функции, как, например, замена специальных символов языка HTML на их "безопасные" аналоги. Безусловно, эта операция легко реализуется с помощью регулярных выражений, поддержка которых в языке Perl очень сильна, однако обработка регулярных выражений сама по себе достаточно ресурсоемка.

Однако сочетание технологии CGI с мощностью языка Perl пока не сдает своих позиций. Безусловным ее преимуществом является широкая распространенность - протокол CGI поддерживается любым веб-сервером, а реализации языка Perl существуют практически для всех платформ. На сегодняшний день имеется огромное количество наработок и готовых решений на основе Perl и CGI. Кроме того, разработана усовершенствованная версия протокола FastCGI, а также модули для веб-серверов, представляющие собой встраиваемые интерпретаторы языка Perl. Благодаря этому производительность веб-сайта на основе СGI+Perl повышается без необходимости перехода на другие технологии.

Описание стандарта CGI можно найти на сайте W3C (World Wide Web Consortium) , описание FastCGI - на официальном сайте стандарта , описание и реализации языка Perl - на сайтах Perl и CPAN (Comprehensive Perl Archive Network) .


Примеры веб-сайтов, использующих Perl и CGI:

National Gallery of Canada gallery.ca/

National Museum of Sweden si.edu/


ASP



Технология ASP (Active Server Pages) была разработана компанией Microsoft как средство создания и обработки сценариев серверной части для своего информационного веб-сервера IIS (Internet Information Server). В качестве языка сценариев чаще всего выступает VBScript (Visual Basic Script), но возможно использование и других объектно-ориентированных языков (JScript, Perl, Python), удовлетворяющих стандарту ActiveX. Сценарии, которые могут располагаться в отдельных файлах или встраиваться прямо в HTML-код страницы между специальными тегами, обрабатываются сервером "на лету", и их исходные тексты недоступны пользователю, т.к. он получает лишь поток "чистых" HTML-страниц.

ASP предоставляет программисту-создателю сценариев объектную модель для работы с информацией, полученной от пользователя через HTML-формы, с базами данных, данными о пользователе и т.д. Обмен информацией с базами данных осуществляется по протоколу ODBC (Open Database Connectivity). ASP полностью поддерживает технологию COM (Common Object Model) для платформы Microsoft Windows [3.3].

Основным недостатком технологии ASP является ее довольно жесткая привязка к веб-серверу IIS и платформе MS Windows. Вследствие этого она не получила широкого распространения, т.к. в настоящее время основной платформой для Интернет-серверов служат различные версии и клоны ОС UNIX. Отсюда же вытекает и еще один недостаток ASP - не слишком высокая надежность, причины которой - ошибки, допущенные разработчиками, и значительное количество программ-"вирусов", выполняющихся только в среде MS Windows. Однако существуют реализации технологии ASP на платформах, отличных от MS Windows. Например, компания Halcyon предлагает реализации ASP для платформ Linux, Solaris и AS/400, а также платформо-независимую реализацию на языке Java. Аналогичные решения разработаны и компанией Chili!Soft для платформ AIX, Solaris, Linux, HP-UX.

К достоинствам ASP можно отнести относительную простоту изучения и поддержку COM-технологии.

Информацию о технологии ASP можно найти на сайте разработчика - компании Microsoft , а также на сайтах, целиком посвященных ASP - и <.com>. Сайты сторонних реализаций ASP: Halcyon - , Chili!Soft - .


Примеры сайтов, созданных с применением технологии ASP:

The Metropolitan Museum seum.org/

Музеи России www.museum.ru (с применением технологии ASP)

JSP и сервлеты



Технологии JSP (Java Server Pages) и сервлетов (servlets) предложены компанией Sun Microsystems и основаны на применении межплатформенного языка Java.

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

Технология JSP имеет много общего с технологией ASP. Будучи встроенными в текст HTML-документа, активные страницы JSP поддерживают как стиль программирования на базе тегов с использованием библиотек тегов, так и стиль программирования с блоками сценариев на языке Java. При запуске JSP-страницы она компилируется в сервлет. Доступ к базам данных осуществляется посредством протокола JDBC (Java Database Connectivity) [3.4].

Достоинства технологий сервлетов и JSP повторяют достоинства самого языка Java. Их сильными сторонами является платформенная независимость и встроенная система безопасного программирования (отсутствие прямого управления памятью и т.д.). Недостатки являются прямым продолжением достоинств - не всегда удается достичь высокой производительности приложений. Однако необходимо заметить, что технологии на основе Java получают все большую популярность, и в настоящее время компании-разработчики наиболее распространенных веб-серверов выпускают версии своих продуктов, поддерживающие JSP и сервлеты (за исключением компании Microsoft, представляющей собственные технологии).

Информацию о технологиях JSP и сервлетов можно найти на сайте компании Sun Microsystems, посвященному Java-решениям - , и на сайте <.com/>.


Примеры сайтов, созданных с использованием технологии JSP и сервлетов:

сайт банковских услуг Bank of America - kamerica.com


PHP



PHP (аббревиатура расшифровывается рекурсивно как "PHP: Hypertext Preprocessor") - еще одна технология, базирующаяся, как ASP или JSP, на встраиваемом в HTML-страницы программном коде. Однако, в отличие от описанных ранее, эта технология является открытой и некоммерческой: серверная часть PHP написана на языке C и распространяется в исходных текстах, поэтому она может функционировать на любой платформе, имеющей компилятор С.

Разработка языка PHP была начата в 1994 г., и уже через несколько лет версия PHP/FI 2.0 стала пользоваться огромной популярностью, хотя и представляла собой довольно разнородный набор функций для доступа к базам данных, отправки сообщений электронной почты и т.д. Версия 3.0 (1997-1998 гг.) определила синтаксис и семантику языка. В версии PHP 4.0 (конец 2000 г.) была изменена структура серверной части и расширена поддержка протоколов обмена данными с веб-сервером, а также появились новые возможности конфигурирования, поддержка механизма сессий и т.д. Связка серверной части PHP с веб-сервером может быть реализована с использованием интерфейса приложений (API) веб-сервера (Apache API, ISAPI, NSAPI и т.д.), либо по протоколу CGI. Как правило, решения на основе PHP обеспечивают достаточно высокую производительность; более того, компанией Zend Technologies был выпущен программный продукт Zend Optimizer - модуль, оптимизирующий выполнение PHP-сценариев.

Значительная часть синтаксиса языка PHP была заимствована из языка C, но в нем встречаются и конструкции, восходящие к языкам C++, Perl и Java. Отметим, что язык PHP нетипизированный (т.е. тип переменных не фиксируется, а может изменяться в зависимости от контекста использования) и не является полностью объектно-ориентированным, хотя в нем и присутствуют понятия объектов и классов.

Для доступа к базам данных PHP может использовать протокол ODBC, а также протоколы конкретных СУБД. В настоящее время (в версии PHP 4.0) поддерживаются СУБД Oracle, PostreSQL, Sybase, Informix, InterBase, mSQL, MySQL, Microsoft SQL Server. (Стоит отметить, что обмен данными по встроенным протоколам СУБД осуществляется быстрее, чем с использованием универсальных протоколов и драйверов ODBC, однако технология ODBC реализует определенный уровень абстракции запросов и представления данных, что может оказаться полезным в случае одновременной работы с несколькими различными СУБД или при перемещении базы данных под управление новой СУБД. Проблемы могут возникнуть из-за различий в реализации языка SQL и в способе представления данных в различных СУБД.) Исторически сложилось так, что чаще всего PHP используется совместно с СУБД MySQL. Возможно, этому способствовало бесплатность и открытость обоих продуктов, а также тот факт, что MySQL была одной из первых СУБД, поддерживаемых PHP.

PHP имеет обширный набор функций для работы с различными технологиями и службами сети Интернет. В качестве примера можно назвать системы электронных платежей CyberCash и Verisign Payflow Pro и сетевые протоколы SNMP, FTP и IMAP. Кроме того, PHP позволяет "на лету" генерировать файлы в форматах PDF, GIF, JPEG и PNG и создавать анимацию в формате ShockWave Flash. Так как PHP изначально создавался для использования в качестве скриптового языка на веб-сервера, он содежит функции для работы с URL, обработки регулярных выражений и проверки орфографии. Также PHP позволяет работать с файлами и каталогами и осуществлять системные вызовы [3.5, 3.6].

Пожалуй, единственным недостатком языка PHP является его структурный (не объектно-ориентированный) характер. Кроме того, PHP развивается столь активными темпами, что порой за ним не успевает ни литература, ни техническая документация.

Исчерпывающую информацию о технологии PHP можно найти на сайтах разработчиков - The PHP Group и Zend Technologies .


Примеры сайтов на основе технологии были PHP:

Museum of Contemporary Art org/museum/currentexhibition.php


ColdFusion



Технология СoldFusion разрабатывается и поддерживается компанией Allaire Corp. Она состоит из следующих компонентов:
  • ColdFusion Studio - средство для визуальной разработки приложений;
  • ColdFusion Server - серверная часть, непосредственно обрабатывающая динамические страницы ColdFusion;
  • CFML (ColdFusion Markup Language) - язык программирования ColdFusion.

CFML представляет собой высокоуровневый язык, встраиваемый, как ASP и JSP, в HTML-страницы, и основанный на тегах, подобных HTML или XML. Исходно он содержит около 70 тегов и около 200 функций, а также поддерживает расширения, созданные с помощью CFX (ColdFusion Extensions) или Java. Средства ColdFusion поддерживают модели COM и CORBA, протокол доступа к базам данных ODBC и технологию OLE-DB, сетевые протоколы POP3, SMTP и FTP, обработку данных в формате XML. Имеются развитые механизмы обработки ошибок и богатые средства поиска в файлах и базах данных.

ColdFusion Server работает на платформах MS Windows, HP-UX, Solaris и Linux (визуальное средство разработки доступно только для среды MS Windows). Обмен данными с веб-сервером может осуществляться с помощью протоколов ISAPI (Internet Server API), NSAPI (Netscape Server API), Apache API или CGI. Таким образом обеспечивается совместная работа с такими распространенными веб-серверами, как Microsoft Internet Information Server, Netscape Enterprise Server, Apache и другими. В ColdFusion Server реализован многопотоковый (multithreaded) механизм обработки запросов, компиляция сценариев при выполнении, восстановление после сбоев. Поддерживаются многопроцессорные серверы и кластеры [3.9].

Несмотря на описанные выше сильные стороны технологии ColdFusion, она, тем не менее, пока не получила широкого распространения. Основной ее недостаток - это "слишком высокий" уровень языка CFML, который хорошо подходит для решения определенного класса стандартных задач, однако не обладает достаточной гибкостью. Стоит также упомянуть относительно высокую стоимость пакета ColdFusion.

Информацию о ColdFusion можно найти на сайте разработчика Allaire Corp. - .


Примеры веб-сайтов на основе технологии ColdFusion - Интернет-магазины:

Casio .com

SwissArmy army.com

BaseOne e.com


SSI



SSI расшифровывается как Server Side Include. SSI - это набор команд, позволяющий включить в страницу информацию, недоступную средствами HTML, такую как вывод программ, значения переменных окружения и статистику по файлам (размер, дата создания и др.)

SSI работает следующим образом: при получении запроса на документ, содержащий SSI-директивы, http-сервер обрабатывает документ, выполняет все SSI-директивы, а получившийся в результате документ возвращает клиенту. Http-сервер не проверяет автоматически все документы на наличие SSI-директив, а только те, которые относятся к типу, указанному в настройках сервера.

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

Пример использования SSI

National Museum of Sweden nalmuseum.se/


Сравнение различных серверных технологий программирования динамических сайтов



Безусловно, все описанные выше технологии имеют очень много общего. Выбор конкретной технологии для решения конкретной задачи зависит от многих факторов, среди которых можно назвать операционную систему и архитектуру сервера, ожидаемую нагрузку на разрабатываемый ресурс, опыт программирования разработчика и даже предполагаемые финансовые затраты. Кроме того, любая из описанных технологий является как бы «прослойкой» между собственно веб-сервером и, например, СУБД, и, вообще говоря, невозможно оценить, скажем, производительность того или иного динамического компонента без учета особенностей реализации данной технологии, используемой платформы и веб-сервера, метода взаимодействия с СУБД, производительности самого сервера и т.д.

Существуют и исторически сложившиеся «стандартные» решения. Так, на платформе MS Windows довольно часто совместно используются веб-сервер IIS, технология ASP и СУБД SQL Server, а на платформе UNIX - веб-сервер Apache, технология PHP или CGI+Perl и СУБД MySQL (стоит отметить, что последнее сочетание может с равным успехом использоваться и на платформе Windows).

Тем не менее, тесты для оценки ориентировочной производительности той или иной серверной технологии все же проводятся. Рассмотрим вкратце результаты одного из таких тестов, опубликованные на сайте Клуба разработчиков PHP . С помощью различных серверных технологий были реализованы простейшие задачи (вывод большого объема статичной информации, запросы к базе данных, чтение файла). В смоделированной ситуации наилучшей оказалась технология JSP (реализация Resin) - отчасти это объясняется встроенным веб-сервером. Технология PHP показала хорошие результаты при работе с файлами и базами данных, а «модульная» версия интерпретатора Perl для веб-сервера Apache - при выводе больших массивов информации. Технология ASP в среднем показала те же результаты, что и PHP, продемонстрировав даже более высокую скорость работы с файлами. Однако авторам не удалось протестировать работу ASP при обращении к СУБД MySQL, а технология ColdFusion не принимала участия в тестировании.

Еще одно тестирование, проведенное агентством eWeek, было опубликовано на сайте ZDNet: Enterprise Linux - <.com/enterprise/stories/linux/0,12249,2646052-4,00.phpl>. Технологии ASP 5.0, ColdFusion 4.5.1, JSP (реализация Apache Tomcat 3.2) и PHP 4.0 сравнивались по 8-ми параметрам: мощность встроенного API, способность получать данные от различных источников, простота изучения, стоимость разработки, простота установки, производительность (на примере простейшего Интернет-магазина), переносимость и инструментарий разработчика. По сумме результатов первое место принад㬻ежит технологии ColdFusion, за ней в порядке убывания оценок следуют JSP, ASP и PHP. Технология PHP заняла последнее место из-за ее «традиционного» стиля программирования; кроме того, по категории «Переносимость» она не получила ожидаемого высшего балла.

Тестирование, проведенное компанией Network Computing отдает первое место технологии PHP (точнее, "связке" PHP и веб-сервера Apache), при этом в качестве сильных сторон отмечаются высокая надежность, подробная документация и поддержка со стороны сообщества пользователей. Кроме связки PHP+Apache, в тестировании принимали участие серверные технологии и веб-серверы ASP+IIS и JSP+NES (Netscape Enterprise Server).

Дать однозначный ответ на вопрос, какая серверная технология «лучше» в общем случае, не представляется возможным. Как уже говорилось ранее, выбор конкретной технологии может зависеть не только от специфики решаемой задачи и имеющегося в наличии программного обеспечения, но и от опыта и личных пристрастий разработчика. Так, PHP фактически реализует классический структурный подход, а ASP - объектно-ориентированный. Программисты, работавшие раньше с языком Java, с большой вероятностью выберут JSP. CGI же позволяет использовать практически любой язык программирования, будь то Си, Java или Visual Basic. Технология ColdFusion наиболее проста для освоения начинающими разработчиками, владеющими языком HTML.