Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Books
  Краткое описание
 Linux
 W. R. Стивенс TCP 
 W. R. Стивенс IPC 
 A.Rubini-J.Corbet 
 K. Bauer 
 Gary V. Vaughan 
 Д Вилер 
 В. Сталлинг 
 Pramode C.E. 
 Steve Pate 
 William Gropp 
 K.A.Robbins 
 С Бекман 
 Р Стивенс 
 Ethereal 
 Cluster 
 Languages
 C
 Perl
 M.Pilgrim 
 А.Фролов 
 Mendel Cooper 
 М Перри 
 Kernel
 C.S. Rodriguez 
 Robert Love 
 Daniel Bovet 
 Д Джеф 
 Максвелл 
 G. Kroah-Hartman 
 B. Hansen 
NEWS
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Rubni-Corbet -> Глав...458 
 Go Web ...451 
 Trees...331 
 2.0-> Linux IP Networking...258 
 Secure Programming for Li...249 
 Stein-MacEachern-> Час...241 
 Plusquellic 1...226 
 Steve Pate 3...222 
 Mike Perry...213 
 Ethreal 4...210 
 Rubni-Corbet -> Глав...210 
 Rubni-Corbet -> Глав...206 
 Rodriguez 6...206 
 Стивенс 9...206 
 M.Pilgrim->Часть 3...192 
 Stewens -> IPC 7...192 
 Стивенс 5...191 
 2.6-> Kernel 2.6.19...191 
 Ethreal 1...191 
 Ethreal 3...188 
 
  01.09.2017 : 2280876 посещений 

iakovlev.org
 

Writing Apache Modules with Perl and C By:   Lincoln Stein and Doug MacEachern Chapter 1 - Server-Side Programming with Apache

 
 Код примеров из книги лежит тут.
 
 
  Итак , в начале был веб-сервер . Это был  CERN httpd, веб-сервер , 
 написанный на си в 1991 в одной из европейских физических лабораторий. 
 CERN httpd был разработан для обслуживания статических веб-страниц . 
 Он вылавливал из сети URL-запросы с помощью т.н. протокола HTTP/0.9 , 
 переводил их в пути  и возвращал контент запрашиваемых страниц . 
 Если вам нужно было расширить функциональность  этого веб-сервера , нужно было перекомпилировать исходники .
 
 Конечно , это было гибко , но не очень удобно .
 На раннем этапе CERN работал с внешними программами для обработки запросов.
 Была построена система обработки таких запросов , которая вызывала командный шелл или внешний скрипт.
 Вывод скрипта перенаправлялся в броузер , в котором страница генерировалась на лету.
 Эта схема позволяла передавать скрипту список аргументов , создающих поисковую систему.
 
 Затем некто Rob McCool из Иллинойского университета разработал другой веб-сервер - Mosaic. 
 NCSA httpd был меньше , чем CERN httpd,быстрее и легче в реконфигурировании . 
 Он быстро вырос до уровня CERN httpd , особенно в штатах.
 Он также позволял на лету генерировать страницы с помощью внешних скриптов. 
 Но скрипты , написанные для работы с NCSA , не работали с CERN httpd.
 
 

Рождение CGI

К счастью , разработчики этих серверов , а также другие разработчики , обьединились и создали стандарт , называемый Common Gateway Interface. Через какое-то время после появления CGI возникла первая проблема . Особенность CGI-скриптов в том , что они пожирают большое количество памяти и ресурсов . Они хорошо проявляют себя на юниксовых системах , но неважно работают на NT . Другой проблемой CGI скриптов является то , что по окончанию работы они выгружаются из памяти ,и для следующего запроса нужна его очередная загрузка .

Server APIs

Первой альтернативой для CGI стало изобретение серверных API , механизма , с помощью которого программисты расширяли функциональность за счет написания новых серверных модулей . Примером такого web API является Plexus web server, написанный Tony Sanders для BSDI. Plexus был 100% написан на перл 4-й версии . Вебмастер мог писать новые модули на перл , компилировать и добавлять их . Позже были разработаны : NSAPI - интерфейс для Netscape; ISAPI - интерфейс для Microsoft IIS; Apache API. Самой большой проблемой всех этих API является их ограниченная портабельность для разных платформ .

Server-Side Includes

Одним из возожностей веб-серверов стало появление SSI - включение внутри HTML специального кода внутри специальных тегов . Впервые это нашло применение в NCSA httpd. Наиболее продвинуто SSI используется в ASP. Наибольшей проблемой SSI является опять все та же несовместимость для разных платформ .

Embedded Interpreters

Для избежания проблем проприетарности API , некоторые вендоры вернулись к использованию высокоуровневых языковых интерпретаторов . Примером может служить mod_pyapache, использующий Python . Исполняемый скрипт на языке питон выполняется очень быстро , потому что интерпретатор уже находится в памяти . Sun Microsystems' "servlet" API позволяет выполнять программы , написанные на Java . Эта книга в основном посвящена апачевскому модулю mod_perl, который запускает на веб-сервере перловый интерпретатор . Он предоставляет программистам полный доступ к Apache API.

Script Co-processing

Другим путем для ускорения CGI-скриптов является их загрузка и постоянное хранение в памяти . Первой такой системой был FastCGI протокол,реализованный Open Market в 1996. Существующие скрипты можно было легко адаптировать под FastCGI небольшим изменением в коде . Реализации FastCGI доступны для Apache, Zeus, Netscape, Microsoft IIS. Но FastCGI не нашел широкого распространения . Тем не менее , он поддерживается для Apache в модуле mod_fastcgi.

Клиентские скрипты

  Другой путь для улучшения производительности веб-сервера - переложить
 часть его тягот на клиента .  JavaScript был добавлен Netscape в 1995, 
 VBScript добавлен  Microsoft чуть позже , повысил возможности клиентского броузера .
 Комбинация возможностей скриптовых языков , css, document layers и других
 HTML-фич породила "Dynamic HTML" (DHTML). Основная проблема DHTML все та же - 
 несовместимость . Причем несовместимость может быть на уровне одной платформы
 для разных броузеров .  Затем появились Java applets. 
 Затем возникла Microsoft ActiveX-технология в форме COM (Common Object Model)
 

Сравнительный анализ

Следующая таблица дает сравнительную характеристику различных веб-технологий .

Портабельность
Производительность
Обслуживание
Power

CGI

++++
+
+++
++

FastCGI

++
+++
+++
++

Server API

+
++++
+
++++

Server-side includes

++
++
++++
++

DHTML

+
+++
+
++

Client-side Java

++
+++
++
+++

Embedded interpreter

+++
+++
++
++++

Integrated system

+
+++
++
++++

Apache Project

  Apache-проект начался в 1995 . Сначала это была public-domain-версия сервера NCSA.
 За это время были добавлены такие фичи , как хостинг виртуальных серверов 
 на одном веб-сервере,различные варианты аутентификации, кэширующее прокси . 
 Например , только на апаче на данный
 момент реализована  HTTP/1.1 Digest Authentication scheme. 
 Была разработана модульная расширяемая архитектура . 
 Мало что осталось от первоначального NCSA httpd , 
 например остался набор конфиг-файлов.
  Успех апача оказался феноменальным . Менее чем за 3 года апач превратился 
  в лидера отрасли .
 Netcraft, британская компания , мониторящая развитие веба , выяснила , 
 что на данный момент 
 апач работает более чем на 50% веб-сайтов .У Microsoft всего 22% рынка.
  Апач послужил кодовой основой для нескольких других коммерческих серверов , 
  например C2Net's Stronghold с его SSL , WebTen by Tenon Intersystems,  Macintosh PowerPC, 
 Red Hat Secure Server. В 1997 году апач был портирован на Win32.
  Апач компактен , хорошо документирован и может быть свободно скачан . 
 Как и другие  open-source продукты , такие как Perl, GNU tools , Linux , 
 Apache имеет много преимуществ над коммерчискими продуктами .
 Его С-код включает 25,000 строк кода . Он очень быстр и потребляет меньше ресурсов ,
 чем многие коммерческие сервера . Его модульная архитектура позволяет 
 гибко настраивать конфигурацию .
 Apache портабелен на многих платформах .
  Любой софт имеет баги . Девелопментский процесс у апача открыт и публичен .
 Исходный код доступен любому , и вы всегда можете принять участие в подписке .  
 Как , правило , баги не остаются долго открытыми . Модульность апача не заставляет вас
 использовать всю его функциональность . Его конфигурация проста и прозрачна за счет
 конфиг-файлов . Вы можете сохранять копии конфиг-файлов и восстанавливать 
 их при необходимости .
 Возможность управлять конфигурацией из командной строки упрощает его поддержку .
 Разрабатываются продвинутые средства конфигурирования , например веб-интерфейс для
 удаленного управления ( http://stein.cshl.org/~lstein/user_manage).
 
 

Apache C и Perl API

API предоставляет доступ к процессам , протекающим внутри сервера . Вы можете детально рассмотреть , что происходит во время любого цикла HTTP-транзакции . Вы можете вызывать произвольные акции при старте и выходе сервера , добавлять новые директивы в конфиг-файлы , настраивать процесс обработки URLs , создавать новые системы аутентификации . Все это поддерживается с помощью модулей , которые загружаются вместе с сервером либо динамически (DSO). Особенность архитектуры апача в том , что его API , написанные на С , используются в наиболее ответственных модулях . Для конкретных приложений больше подходят CGI-скрипты , FastCGI. В 1996 году Doug MacEachern разработал mod_perl,Perl-интерпретатор , встроенный в модуль. Этот модуль позволяет вызвать любую сишную API на языке Perl .
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье
a
  aaa
2012-09-14 17:46:01