Является ли Мейсон каркасом?
У меня был сговор с другом, что Мейсон (Perl) не является фреймворком, а языком шаблонов. Я считаю, что Mason для Perl делает то, что JSP делает для Java (как аналог, а не чистое техническое сравнение). Из того, что я знаю, JSP не является основой, и я не чувствую, что это не Мейсон. Когда я посмотрел wikipedia Mason (Perl), я вижу, что на главном сайте говорится, что это структура веб-приложений, написанная на Perl, в то время как конкурсы на странице обсуждения он.
Любые указатели на то, почему это/не является каркасом?
Обновление на основе комментариев от ysth:
Для рамки я считаю, что она должна, по крайней мере, упростить доступ к db, управлять сеансами, обеспечивать базовую безопасность, которая понадобится webapp, шаблоны и повторное использование кода (или библиотеки, облегчающие простые задачи).
Ответы
Ответ 1
Мейсон - это "М", не являющийся структурой MVC (Model-View-Controller). Он предоставляет расширенные функции рендеринга (просмотра), поэтому люди думают о том, что Мейсон является языком шаблонов. Однако он также обеспечивает довольно много механизмов отправки (в epsecially в форме dhandlers) и механизмов управления (которые естественным образом вписываются в автопогрузчики).
Несколько лет назад я написал онлайн-учебник (в Mason), чтобы продемонстрировать некоторые из этих функций. Он оптимизирован для полноэкранного отображения и нуждается в javascript.
Что Мейсон не дает вам, это слой абстракции базы данных, поэтому вам нужно принести свою собственную модель.
Насколько я знаю, amazon.com написан в Mason, а также многие другие сайты.
Если вам нравится работать с Mason, но вы хотите иметь модель, больше игрушек и пони, тогда вы можете рассмотреть Jifty в качестве рамки веб-приложения.
Ответ 2
Система шаблонов будет похожа на HTML::Template
, то есть на модуль, который только делает шаблоны.
Я чувствую, что Mason
делает больше, он имеет как-то механизм маршрутизации, он обеспечивает обработку аргументов, хотя %ARGS
, intialisations через %INIT
.
Он также предоставляет интерфейсы для mod_perl
, CGI
...
Теперь он не разговаривает с базой данных, как если бы вам нужен чистый способ сделать это, вам нужно будет использовать Class::DBI
, DBIx::Perlish
или одну из 100 систем perl, которые выполняют сопоставление объектов, или что-то еще...
Ответ 3
Невозможно ответить на вопрос о том, является ли HTML:: Mason каркасом или нет, не глядя на него, но я всегда доволен следующим определением....
"фреймворк вызывает вашу программу, тогда как ваша программа вызывает библиотеку
Ответ 4
Это не Model-View-Controller тип фреймворка, он, вероятно, ближе к PHP, чем Ruby on Rails, например (и так же плохой из того, что я видел).
Ответ 5
Глядя на Встраиваемый Perl в HTML с Mason в отношении своего соревнования, я бы сказал, что это язык шаблонов. В противном случае Catalyst и Maypole будет в списке. Кроме того, я думаю, что я где-то читал, что вы можете использовать Mason в качестве View в приложении Catalyst.
Я предполагаю, что могу видеть, где вы можете использовать его как фреймворк, но он кажется более полным, если вы рассматриваете его как язык шаблона.
Ответ 6
Мейсон сам по себе не является фреймворком, это просто система шаблонов, но с некоторыми очень интересными функциями. Он получил свою собственную структуру, и вы можете очень легко вставлять perl-код в нее, а также получить поддержку кеша. Я видел людей, которые используют только Мейсона для разработки большого приложения, но я думаю, что он работает лучше в среде MVC.
Будьте осторожны!
Ответ 7
Следующее определение структуры взято из книги Гамма по шаблонам проектирования. "Структура - это набор взаимодействующих классов, которые составляют многоразовый дизайн для определенного класса программного обеспечения". Мейсон, по этому определению, является основой. Структура MVC - это только один тип фреймворка.
Ответ 8
Зависит от вашего определения структуры.
Вы можете применить фреймворк имен к любой библиотеке, если это делает несколько вещей.
Ответ 9
HTML:: Мейсон - это то, какие рамки хотят стать, когда они становятся старше. С HTML:: Mason вы получаете:
- диспетчер
- шаблонный
- кэширование
- входа
- чрезвычайно гибкая модуляция
Он был разработан для высокопроизводительных многоуровневых веб-приложений, а не для удобства поклонников шаблонов проектирования, заимствованных из настольных программ (таких как MVC).