Технология MVC в высоконагруженных проектах Андрей Шетухин Илья Космодемьянский <СУП> Классическая MVC Модель Данные Представление Результат Запросы Данные Контроллер БД Результат Шаблоны Критика Наличие готовых решений Быстрая разработка Повторное использование кода Единая точка входа в систему Не работает под большими нагрузками Проблемы с масштабированием Сложность разработки моделей и контроллеров Отказаться от MVC? Высокая скорость работы Быстрое исправление локальных ошибок Сложность поддержки Проблемы повторного использования кода Трудоемкость внесения изменений Модифицировать MVC! Данные Представление Данные Модель Вывод Запросы Данные Контроллер БД Результат Процессор Шаблоны Процессор - Обработка данных без существенного изменения объектов - Простые операции делать быстро - Реализация общего функционала в одном месте - Перераспределение нагрузки Дополнительные требования - Высокая скорость работы - Интерфейсы к популярным языкам программирования - Простота использования в проектах - API для разработки расширений - Кроссплатформенность - Расширяемость функционала Шаблонизаторы <CTPP/> - быстрый шаблонизатор Простое API Расширяемость языка шаблонов Переносимость Компиляция и кеширование шаблонов Разделение одного байткода между процессами Высокая скорость работы Защищенность среды исполнения Основные компоненты Виртуальная машина Библиотека функций Компилятор шаблонов Коллектор результатов Кэш байткода Программный интерфейс - Система загрузки шаблонов - Функции API шаблонизатора Данные Шаблон Виртуальная машина Результат Байт-код Кэш Компилятор Результаты тестирования 5 – CTPP2 4 – HTML::Template::JIT 3 – HTML::Template::Pro 2 – HTML::Template 1 – Template:Toolkit Будущее - Поддержка синтаксиса TemplateToolkit ЭЦП шаблонов Компиляция в исполняемый двоичный код Развитие библиотеки встроенных функций Программный интерфейс к Java и RoR Поддержка платформы Windows Вопросы?