Web框架有哪些好的模式?

时间:2010-09-30 14:51:46

标签: design-patterns frameworks

除了MVC 之外,什么是对Web框架有用的设计模式,Rails引发的狂热?并不是说它是一件坏事,但它现在在网络框架中几乎无处不在。

理想情况下,模式应该更容易:

  • 关注点分离
  • 代码的模块化/可重用性
  • 单元测试

什么样的图案符合要求?是否有跟随它的框架示例?

6 个答案:

答案 0 :(得分:4)

MVC Rails引发的狂热。它可以追溯到Smalltalk。您也可以查看GoF书中的历史记录,其中包含Rails之前的历史记录。

我不知道GoF书之外的模式,但我会说分层的一般想法(例如,单独的Web,服务和持久层)和分解都适用。

答案 1 :(得分:3)

Lift网络框架遵循其创建者所称的View First

这与MVC的不同之处在于控件首先由视图处理,而不是由控制器处理。视图可以在几个片段中调用逻辑(最接近控制器的模拟)。

我将此视为RESTful设计的反转,其中URL映射到资源,而视图是显示这些资源的一种方式。在View First中,URL映射到视图,这些视图可以拉出并显示任意资源集合。

这背后的原因是,网站或应用程序上的页面通常需要显示的不仅仅是所请求的资源:它可能包含最近的博客评论列表,“喊叫框”等等。 。其他框架通过使用辅助机制来显示内容和处理输入(例如Django的模板包含标记和中间件),并让控制器*处理页面显示的主要资源来处理这个问题。

(*让Django参与这样的讨论是很棘手的,因为基本上它是MVC,虽然由于微妙的原因,它的创建者使用模型 - 视图 - 模板这个术语。但是,我会在这里调用Django的视图 a 控制器。)

答案 2 :(得分:1)

你看过MVP了吗?

它是MVC的一个众所周知的替代品,并且在许多“着名的”模式书中都有所涉及。

你可以阅读here Martin Fowler实际上将MVP分成两种模式。

这是一个MVP framework for PHP

这是one for .NET

值得注意的是,负责MVC的.NET人员也受到django的影响,而不仅仅是rails。

答案 3 :(得分:1)

裸体物品

http://www.nakedobjects.net/home/index.shtml

我应该澄清一下,这会使用MVC,但方式却截然不同

答案 4 :(得分:0)

主题观察者模式

工厂模式

答案 5 :(得分:0)

虽然已经提到过MVVM(或DM-V-VM),但在MSDN network上有一个关于它的好系列(尽管它主要涉及WPF)。如果您正在寻找另一个DM-V-VM示例,我碰巧写了一个PHP framework,主要是遵循这种模式。

此外,我相信在Web应用程序开发中对MVC有很多不同的解释。只需比较Apache StrutsCakePHP背后的想法(关于MVC)。我没有使用过RoR,但是我会比RoR更进一步了解MVC(再次,在web app dev中)。