Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Базовые концепции и структуры




 

В архитектуре Apache можно выделить следующие базовые объекты:

  1. Сервер.
  2. Коннект.
  3. Запрос.
  4. Процесс.

Каждый из этих объектов представлен соответствующей структурой в заголовочном файле httpd.h.

Помимо этих 4-х основных объектов в архитектуре Apache нужно отметить еще два объекта.

Первый объект — это пулы. Управлением ресурсов в Apache занимаются пулы — APR pools (apr_pool_t). Любой ресурс, выделяемый динамически, если он привязан к пулу, будет удален автоматически после использования. Пул привязывает ресурсы к жизненному циклу основных объектов, о которых мы сказали выше. Второй объект — это конфигурационный массив ap_conf_vector_t, причем каждому модулю в нем отводится свое место.

Массив хранит как глобальные конфигурационные данные, так и локальные.

В переводе на язык си основные четыре объекта представлены структурами:

request_rec server_rec conn_rec process_rec

 

Более всего используются первые две. Каждый раз, когда на сервер приходит клиентский запрос, создается объект структуры request_rec, который передается в качестве параметра в любой обработчик, занятый обработкой запроса. Структура содержит не только стандартную информацию о HTTP-запросе, но и внутреннюю служебную информацию: пул запросов, массив глобальных и массив локальных конфигурационных записей, таблицы HTTP-заголовков, таблицу переменных окружения, указатели на сервер, коннект, фильтры, URL и его трансляцию, и т. д. Определение находится в httpd.h:

struct request_rec { apr_pool_t *pool; conn_rec *connection; server_rec *server; request_rec *next; request_rec *prev; request_rec *main; ... };

 

Структура server_rec представляет веб-сервер. Для каждого виртуального хоста имеется свой собственный экземпляр server_rec. Этот объект живет на протяжении всей жизни сервера. Ресурсы он берет из пула процессов. После структуры request_rec это вторая наиболее важная структура в Apache:

struct server_rec { process_rec *process; server_rec *next; const char *defn_name; char *server_admin; char *server_hostname; apr_port_t port; ... };

 

Структура conn_rec представляет TCP-коннект, создается при открытии коннекта и удаляется при его закрытии. Один коннект может породить несколько запросов. Запрос — это производный объект от коннекта:

struct conn_rec { apr_pool_t *pool; server_rec *base_server; void *vhost_lookup_data; apr_sockaddr_t *local_addr; apr_sockaddr_t *remote_addr; ... };

 

Структура process_rec имеет более непосредственное отношение к операционной системе, нежели к архитектуре самого сервера. Пул процессов можно получить через нее посредством

server_rec -> process_rec -> pool.

 

Другие структуры Apache разнесены по разным хидерам, из которых можно выделить следующие группы:

  1. ap_ — хидеры с таким префиксом генерируют низко-уровневое API и напрямую, как правило, не используются.
  2. http_ — в этих хидерах находится API, представляющее наибольший интерес для разработчиков.
  3. util_ — эти хидеры аналогичны первой группе.
  4. mod_ — здесь находятся определения для модулей.
  5. apr_ — APR API.

Для разработчиков наибольший интерес представляют следующие заголовки:

http_config.h http_connection.h http_core.h http_log.h http_main.h http_protocol.h http_request.h http_vhost.h httpd.h util_filter.h ap_provider.h mod_dbd.h util_ldap.h util_script.h

 




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 547; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.