На системе, оперирующей множеством пользовательских счетов, выводится чуть меньше сотни различных вариантов статистики и сколько-то десятков интерфейсов через шаблонизатор, сидящий во &quot;View&quot;. Сама база - понятно - в &quot;Model&quot;. <br>
<br>Для ухода от персонального кода для каждого отчёта, мы взяли за основу <a href="http://search.cpan.org/%7Eaaronjj/Class-DBI-Plugin-FilterOnClick-1.1/lib/Class/DBI/Plugin/FilterOnClick.pm">Class::DBI::Plugin::FilterOnClick</a> для вывода удобных таблиц - с фильтрацией, сортировкой, пейджингом и всем прочим (вот пример использования: <a href="http://cdbi:demo@cdbi.gina.net/cdbitest.pl">http://cdbi:demo@cdbi.gina.net/cdbitest.pl</a>) и прикрутили его к &quot;Controller&quot;.<br>
<br>Результаты показались удобным (хотя по размеру кода для поставки данных, настройки колонок и тюнинга получилось ненамного меньше) - больше возможностей в сравнении со старыми отчётами. Но есть две проблемы.<br><br>Во-первых, модуль берёт данные из Class::DBI, что на больших объёмах даёт заметный проигрыш в скорости. Смена Class::DBI на DBIx::Class врядли увеличит скорость получения данных на порядок.<br>
<br>Во-вторых, модуль поставляет уже готовый громадный html с таблицами, ссылками, стилями и т.д в шаблонизатор, нарушая таким образом принцип MVC. Здесь же рядом возник ещё один интересный вопрос. Обязательно ли принудительно весь вывод в самих шаблонах эскейпить, устраивая такую вот параноидальную защиту от XSS? <br>
<br>Хотелось бы понять, насколько это плохо и кто как выходит из подобного положения?<br><br>П.С. всё крутится на f/w Сatalyst.<br>