Технологии программирования 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 способствует быстрой разработке, так как это интерпретируемый язык; исходный код не надо компилировать перед запуском.