Технологии программирования Web
Рефераты >> Коммуникации и связь >> Технологии программирования Web

ISAPI

Подобно CGI, спецификация ISAPI (Internet Server Application Programming Interface) определяет правила взаимодействия между Web-сервером и дополнительны­ми программами. Для того чтобы понять, зачем понадобился альтернативный подход к созданию программ, выполняющихся на сервере, поговорим о преимуществах и не­достатках стандарта CGI.

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

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

Стремление повысить производительность и снизить затраты ресурсов привело к созданию корпоративных стандартов. Наиболее известными из них являются NSAPI и ISAPI.

Основное отличие ISAPI-программы от CGI-сценария состоит в том, что ISAPI-программа представляет собой не исполняемый файл, а динамическую библиотеку (DLL). Благодаря этому появилась возможность запускать программу не как отдель­ный процесс, а как поток, принадлежащий Web-серверу. Для выполнения потока тре­буется значительно меньше ресурсов, чем для работы независимого процесса. Поток использует адресное пространство породившего его процесса и работает намного бы­стрее, чем отдельный процесс.

По окончании выполнения процесс выгружается из памяти, а при поступлении следующего запроса снова загружается с диска. Это также не способствует эффектив­ной работе CGI. При интенсивном поступлении запросов необходимость постоянного обмена с диском создает дополнительную нагрузку на сервер. В отличие от CGI-сценария, ISAPI-программа, окончив свою работу, как правило, остается резидентной в памяти и используется для обработки последующих запросов.

Однако иногда преимущества ISAPI-программ оборачиваются недостатками. (Это не удивительно. Ведь если бы ISAPI-программы были свободны от недостатков, они бы быстро вытеснили CGI-сценарии.)

Если за универсальность CGI-сценариев пришлось платить недостаточной произ­водительностью, то в качестве платы за высокую производительность создатели ISAPI-программ жертвуют универсальностью. Арсенал языков, имеющихся в распо­ряжении разработчиков ISAPI-программ, значительно беднее, чем у их коллег, соз­дающих CGI-сценарии. По сути, тому, кто хочет быстро написать достаточно боль­шую ISAPI-программу, не остается иного выбора, кроме C++.

Второй недостаток ISAPI гораздо серьезнее первого. Поскольку программа данного типа выполняется как поток, порожденный сервером, она использует адресное про­странство сервера. Следовательно, ошибка ISAPI-программы может не только вызвать ее аварийное завершение, но и вывести из строя сервер.

Программы, использующие спецификацию ISAPI, делятся на две категории.

* Расширения. Функционально они мало чем отличаются от CGI-сценариев. По­добно CGI-сценариям, расширения реализуют дополнительные возможности Web-сервера, но строятся совершенно по-другому. Рассмотрению ISAPI-расширений посвящена данная глава.

* Фильтры. Это особый класс программ. Если расширения дополняют возможно­сти Web-сервера, то фильтры изменяют его поведение. Принцип работы и реа­лизация ISAPI-фильтров будут рассмотрены в следующей главе.

ISAPI-расширение представляет собой динамическую библиотеку (DLL), которая связывается с Web-сервером в процессе его работы. В данной библиотеке должны экспортироваться, т.е. быть доступными для вызова, две функции: GetExtensionVersion() и HttpExtensionProcf).

Особенности выполнения ISAPI-расширений, а также основные отличия программ данного типа от CGI-сценариев проще всего выяснить, рассматривая процедуру вызо­ва расширения, а также назначение указанных выше функций и параметров, переда­ваемых при их вызове.

В отличие от расширения, которое вызывается лишь тогда, когда в запросе клиента явно указан URL программы, ISAPI-фильтр получает управление при каждом обра­щении клиента к серверу. Программа-фильтр загружается в память при запуске Web-сервера и остается резидентной в течение всего времени работы сервера.

Язык программирования Perl

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

Perl был создан в 1986 году как инструмент для администрирования и конфигурирования системных ресурсов сети, состоящей из Unix-компьютеров. Он сочетает в себе лучшие черты C, shell, sed и awk, поэтому для тех, кто знаком с ними, изучение Perl-а не представляет особого труда. Cинтаксис выражений Perl-а близок к синтаксису C. В отличие от большинства утилит ОС UNIX Perl не ставит ограничений на объем обрабатываемых данных и если хватает ресурсов, то весь файл обрабатывается как одна строка. Рекурсия может быть произвольной глубины. Хотя Perl приспособлен для сканирования текстовых файлов, он может обрабатывать так же двоичные данные и создавать .dbm файлы, подобные ассоциативным массивам. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу на С или C++ куски кода на Perl-е, а также позволяет осуществлять доступ к базам данных.

Язык Perl был создан для повышения эффективности обработки текстовых документов. Он ориентирован на обработку строк. В настоящее время язык получил большое распространение как инструмент создания исполняемых модулей WWW-сервера. Существующие пакеты расширения обеспечивают доступ к SQL-серверам непосредственно из Perl-программы. Это позволяет использовать его для решения всех задач, возникающих при обеспечении WWW-доступа к базам данных. Perl эффективен также при обработке произвольных структур данных: существующих отчетов, списков, карточек в электронном виде.

Хотя CGI-приложения можно писать практически на любом языке, Perl и CGI-программирование стали синонимами для многих програм­мистов. Как сказал Хасан Шрейдер (Hassan Shroeder), первый вебмастер Sun, «Perl - это артерия Интернета». Perl - самый широко исполь­зуемый язык для CGI-программирования, и для этого есть много веских причин:

• Perl легко выучить: его синтаксис напоминает другие языки (например С), потому что он «многое прощает», - при ошибке выда­ется подробное сообщение, помогающее быстро локализовать про­блему.

• Perl способствует быстрой разработке, так как это интерпретируе­мый язык; исходный код не надо компилировать перед запуском.


Страница: