Слайд 2первые наработки - 2003 год
нагруженный проект, много запросов, мало памяти, мало CPU
компьютеры
выросли, но выросли и нагрузки; ничего не изменилось
новые требования: модульность, упрощение API, переносимость
Слайд 3Парадигма MVC и CAS
что такое MVC и зачем оно нужно?
наши модификации
достоинства предложенной
схемы
архитектура CAS
Слайд 4Классическая архитектура MVC
Слайд 5Критика
плохо работает под большой нагрузкой
сложность разработки моделей, контроллеров и представлений
ненужный код в
моделях
проблемы с масштабированием
Слайд 7Достоинства
модели – универсальные
формирование ответа – только в представлении
для генерации HTML/JSON/XML кроме шаблона
ничего не требуется
простота внесения правок
высокая скорость работы
Слайд 8Проект CTPP
виртуальная машина
библиотека функций
компилятор
коллектор результатов
кэш байткода
Слайд 9Результаты
CTPP2
HTML::Template::JIT
HTML::Template::Pro
HTML::Template
Template::Toolkit
Слайд 10Архитектура CAS
модульность
изоляция сущностей
простота разработки и сопровождения
расширяемость
универсальность
интегрируемость
Слайд 11Жизненный цикл
загрузка конфигурации
загрузка модулей
создание сервера приложений
обработка запросов
выход
Слайд 12Обработка запроса
контролллер исполняется первым
модели запускаются последовательно
если возникла ошибка – работают финализаторы
представление формирует
данные
Слайд 13От слов – к делу!
необходимый инструментарий
пишем “Hello, World!”
тестируем результаты работы
пример посложнее –
лента новостей
сравним с mod_perl
и с PHP – тоже сравним
Слайд 14Инструменты
компилятор C++
система сборки cmake
сервер приложений C++
10 минут свободного времени
Слайд 18Hello, World!
Проверяем результат
Слайд 22Интеграция
единые шаблоны для всего проекта, независимо от “движка”
простота миграции между технологиями
высокая скорость
прототипирования и разработки
поддержка популярных языков и сред: Perl, PHP, Python
Слайд 23Интерфейсы
Apache 1.3.X
Apache 2.X
FastCGI
Слайд 24Платформы и архитектуры
Linux
FreeBSD
Solaris
i386
amd64
UltraSPARC
Слайд 25Развитие проекта
сервер-сборщик (привет, Mail.ru ;)
несколько разных View: HTML, JSON, XML
отдельные части сервера
– в виде самостоятельных библиотек
модули CAS для работы с разнообразными поставщиками данных