14

我一直在和一个朋友争论 Mason (Perl) 不是一个框架,而是一种模板语言。我觉得 Mason for Perl 做了 JSP 为 Java 做的事情(作为一个类比,而不是纯粹的技术比较)。据我所知,JSP 不是一个框架,我觉得 Mason 也不是。当我查看 wikipedia Mason (Perl)时,我看到主站点说它是一个用 Perl 编写的 Web 应用程序框架,而讨论页面对它提出了质疑。

关于它为什么是/它不是框架的任何指示?

根据 ysth 的评论进行更新:对于一个框架,我认为它至少应该使数据库访问变得容易、管理会话、webapp 所需的基本安全性、模板和代码重用(或使基本任务变得简单的库)。

4

9 回答 9

15

Mason 是 MVC(模型-视图-控制器)框架的缩写。它提供了广泛的渲染(视图)功能,这就是为什么人们认为 Mason 是一种模板语言。然而,它也提供了相当多的调度机制(特别是 dhandler 的形式)和控制机制(很自然地适合自动处理程序)。

几年前,我写了一个在线教程(在 Mason 中)来展示其中的一些功能。它针对全屏显示进行了优化,并且需要启用 javascript。

Mason 没有给你的是数据库抽象层,所以你必须自带 Model。

据我所知,amazon.com 和许多其他网站都是用 Mason 编写的。

如果您喜欢与 Mason 一起工作,但又想拥有一个模型、更多玩具和一匹小马,那么您可以考虑将Jifty视为一个 Web 应用程序框架。

于 2008-12-08T21:58:59.777 回答
4

模板系统类似于HTML::Template,即只做模板的模块。

我觉得它Mason做得更多,它以某种方式具有路由机制,但它提供了参数处理%ARGS,通过%INIT.

它还提供接口mod_perlCGI...

现在,它不与数据库对话,就好像您想要一种干净的方式来做到这一点,您必须使用Class::DBI,DBIx::Perlish或其他数百个执行对象映射的 perl 模块中的一个,或者其他任何东西......

于 2008-12-08T10:41:10.050 回答
4

不看它就无法回答 HTML::Mason 是否是框架的问题,但我总是对以下定义感到满意....

“一个框架调用你的程序,而你的程序调用一个库”

于 2008-12-08T11:56:13.613 回答
4

它不是模型-视图-控制器类型的框架,例如它可能比 Ruby on Rails 更接近 PHP(并且从我所看到的情况来看同样糟糕)。

于 2008-12-08T14:27:08.893 回答
1

用 Mason 的竞争观点来看待 HTML 中的 Embedded Perl,我会说它是一种模板语言。否则CatalystMaypole会在名单上。另外,我想我在某处读到过,您可以使用 Mason 作为 Catalyst 应用程序中的视图部分。

我想我可以看到你可以在哪里像框架一样使用它,但是如果你将它视为模板语言,它似乎更完整。

于 2008-12-08T14:13:56.393 回答
1

Mason 本身并不是一个框架,它只是一个模板系统,但具有一些非常酷的功能。它有自己的结构,你可以很容易地在其中嵌入 perl 代码,它还支持缓存。我见过有人单独使用 Mason 来开发大型应用程序,但我想它在 MVC 框架中效果更好。

小心!

于 2009-03-27T10:52:19.573 回答
1

HTML::Mason 是框架在变老后想要成为的样子。使用 HTML::Mason 你会得到:

  • 调度员
  • 模板
  • 缓存
  • 日志记录
  • 极其灵活的模块化

它是为高性能的多层 Web 应用程序而设计的,而不是为了取悦从桌面编程(例如 MVC)中借来的设计模式的粉丝。

于 2011-01-19T21:43:22.837 回答
1

下面的框架定义取自 Gamma 关于设计模式的书。“框架是一组协作类,它们构成了特定软件类的可重用设计。” 根据这个定义,Mason 是一个框架。MVC 框架只是一种框架。

于 2012-08-25T23:33:56.050 回答
0

取决于您对框架的定义。

如果名称框架不止一件事,您可以将名称框架应用于任何库。

于 2008-12-08T10:36:40.793 回答