The Apache Modeling Project. Глава 1


Предыдущая статья: The Apache Modeling Project. Введение

1 Введение

1.1 О документе

Данный документ предназначен для всех, кто интересуется техническими аспектами HTTP серверов и в особенности сервера Apache. Документ почти не содержит информации об использовании и администрировании Apache - данные вопросы хорошо освещены в других источниках. Мы же попытаемся дать Вам не только хороший обзор сервера, но и детальное описание его устройства, необходимое для понимания того, как работает сервер Apache.

Часть 2 описывает общие задачи HTTP сервера, а также поведение сервера в рабочем окружении. В этой части мы сфокусируем свое внимание на следующих вопросах: протокол HTTP и аспекты его безопасности, управление сессиями и динамический контент. Часть 3 расскажет о HTTP сервере Apache, его особенностях, конфигурации, администрировании и API.
Часть 4 проведет читателя через внутреннее устройство Apache. Данная часть предназначена для разработчиков и людей, которые хотят знать, как устроен многозадачный сервер. Мы расскажем об основных концепциях сервера и покажем их реализацию в Apache. Эта часть не охватывает всех аспектов работы сервера, но показывает наиболее важные концепции, необходимые для понимания всего кода сервера Apache.

Все диаграммы в этом документе построены в соответствие с Фундаментальными Концепциями Моделирования (FMC).

1.2 Философия FMC

Анализ существующего ПО является повседневной задачей при разработке ПО. Так как программные системы становятся все более сложными, то появляется необходимость разделения труда: люди, разрабатывающие программный продукт должны передавать свои знания - всестороннее взаимодействие команды стало абсолютной необходимостью. Трудности возникают всякий раз, когда новый член команды собирает информацию о проекте или, когда менеджер команды, не участвующий напрямую в разработке, должен управлять этим процессом.
Наша группа “Интенсивные системы моделирования ПО” в институте разработки программных систем Hasso-Plattner сфокусировалась на нахождении методов эффективного взаимодействия и разделения знаний о программных системах.
Модель - это некоторая абстракция программной системы, которая помогает нам думать и говорить об одном и том же. Каждый, кто имеет дело с программной системой, формирует в своем уме уникальную модель системы. Разделение труда происходит гораздо лучше, если эти модели одинаковы у всех.
Фундаментальные концепции моделирования (FMC) помогают в переносе модели программной системы от одного человека к другому. Для получения большей информации о FMC посетите сайт http://www.f-m-c.org/.

1.3 Проект моделирования

Проект был создан в институте разработки программных систем Hasso-Plattner. Идея проекта в том, чтобы показать студентам процесс анализа устройства реального программного продукта. Apache - это HTTP сервер, разработанный множеством программистов и используемый во многих компаниях по всему миру. Исходный код данного сервера является открытым. Поэтому он является очень интересным объектом для исследования. Начав проект, мы выяснили, что существует множество информации об администрировании Apache, но очень мало о деталях реализации, помимо самого исходного кода.
Множество докладов с семинаров 2001 и 2002 годов можно найти на портале моделирования Apache (http://apache.hpi.uni-postdam.de).
Результатом проекта стал набор моделей, описывающих различные аспекты Apache и его работы, которые сформировали базис этого документа.

1.4 Источники информации

Первой задачей участников проекта стал поиск источников информации об Apache. Очень легко найти информацию об использовании и администрировании Apache, например, на официальном сайте HTTP сервера (http://httpd.apache.org). Или возьмем одну из многочисленных книг, например, книгу “Apache Desktop Reference” Ральфа Энгельсчалла. Найти же информацию о внутреннем устройстве Apache было намного труднее. Очень хорошим источником стала книга “Написание модулей для Apache на Perl и C” Линкольна Стейна и Дага МакИчерна, которую можно скачать с нашего сайта или заказать в магазине Ozon. Эта книга описывает API модулей Apache и дает информацию, необходимую для создания собственных модулей. Она содержит неплохое описание API Apache и цикла “запрос-ответ” (смотрите раздел 4.4).
Наиболее важным источником информации стал сам исходный код Apache. Он хорошо комментирован, а также содержит множество описаний деталей реализации. Но существует одна проблема - исходный код является единым для множества платформ. Для Apache 1.3.x мы использовали только код, предназначенный для платформы linux. В 2002 году мы исследовали исходный код Apache 2.0, который лучше структурирован. Гибкость второй версии Apache создает существенную помеху для анализа его кода. Например, механизм хуков, предоставляющий расширяемый механизм косвенных вызовов процедур, представлен элегантным макрокодом. Без понимания этого кода мы бы не смогли найти нужные нам обработчики. (смотрите раздел 3.3.2).
Единственным инструментом, используемым для анализа исходного кода, стала программа, трансформирующая код на языке Си в набор HTML файлов. Эти файлы доступны на сайте проекта

Опубликовано в: Архитектура Март 12, 2006

7 Комментариев »

  1. Интересней всего было бы посмотреть на эту программу - которая генерит из С-исходников html файлы..

    Комментарий от Alexey — Апрель 27, 2006 @ 6:02 pm

  2. Ссылка на книгу мертвая. Жаль, очень хотелось :(

    Комментарий от Thesis — Ноябрь 13, 2006 @ 2:42 pm

  3. Привет Сделайте работоспособной ссылку на книгу

    Комментарий от VVP — Январь 25, 2008 @ 11:17 am

  4. ССылка на книгу
    /resources/book_apache_c_mod_perl.zip

    Комментарий от kubben — Февраль 27, 2008 @ 10:15 am

  5. начал читать занятно

    Комментарий от pavel — Июль 17, 2008 @ 2:20 pm

  6. Жалко за ссылку! но все равно спасиба!!! РЕС*ПЕКТ!!!!
    _________
    wi-f.ru

    Комментарий от skif — Август 28, 2008 @ 3:53 pm

  7. Интересней всего было бы посмотреть на эту программу - которая генерит из С-исходников html файлы..

    Комментарий от Василий — Декабрь 21, 2008 @ 12:19 pm

Оставить комментарий

You must be logged in to post a comment.

© apachedev.ru, 2005-2011