[Moscow.pm] MVC, шаблонизаторы и универсальный отчётник

Dmitry Simonov dsimonov на gmail.com
Чт Янв 31 01:31:42 PST 2008


На системе, оперирующей множеством пользовательских счетов, выводится чуть
меньше сотни различных вариантов статистики и сколько-то десятков
интерфейсов через шаблонизатор, сидящий во "View". Сама база - понятно - в
"Model".

Для ухода от персонального кода для каждого отчёта, мы взяли за основу
Class::DBI::Plugin::FilterOnClick<http://search.cpan.org/%7Eaaronjj/Class-DBI-Plugin-FilterOnClick-1.1/lib/Class/DBI/Plugin/FilterOnClick.pm>для
вывода удобных таблиц - с фильтрацией, сортировкой, пейджингом и всем
прочим (вот пример использования: http://cdbi:demo@cdbi.gina.net/cdbitest.pl)
и прикрутили его к "Controller".

Результаты показались удобным (хотя по размеру кода для поставки данных,
настройки колонок и тюнинга получилось ненамного меньше) - больше
возможностей в сравнении со старыми отчётами. Но есть две проблемы.

Во-первых, модуль берёт данные из Class::DBI, что на больших объёмах даёт
заметный проигрыш в скорости. Смена Class::DBI на DBIx::Class врядли
увеличит скорость получения данных на порядок.

Во-вторых, модуль поставляет уже готовый громадный html с таблицами,
ссылками, стилями и т.д в шаблонизатор, нарушая таким образом принцип MVC.
Здесь же рядом возник ещё один интересный вопрос. Обязательно ли
принудительно весь вывод в самих шаблонах эскейпить, устраивая такую вот
параноидальную защиту от XSS?

Хотелось бы понять, насколько это плохо и кто как выходит из подобного
положения?

П.С. всё крутится на f/w Сatalyst.
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: http://mail.pm.org/pipermail/moscow-pm/attachments/20080131/591afd45/attachment.html 


Подробная информация о списке рассылки Moscow-pm