除了MVC 之外,什么是对Web框架有用的设计模式,Rails引发的狂热?并不是说它是一件坏事,但它现在在网络框架中几乎无处不在。
理想情况下,模式应该更容易:
什么样的图案符合要求?是否有跟随它的框架示例?
答案 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分成两种模式。
这是one for .NET。
值得注意的是,负责MVC的.NET人员也受到django的影响,而不仅仅是rails。
答案 3 :(得分:1)
答案 4 :(得分:0)
主题观察者模式
工厂模式
答案 5 :(得分:0)
虽然已经提到过MVVM(或DM-V-VM),但在MSDN network上有一个关于它的好系列(尽管它主要涉及WPF)。如果您正在寻找另一个DM-V-VM示例,我碰巧写了一个PHP framework,主要是遵循这种模式。
此外,我相信在Web应用程序开发中对MVC有很多不同的解释。只需比较Apache Struts和CakePHP背后的想法(关于MVC)。我没有使用过RoR,但是我会比RoR更进一步了解MVC(再次,在web app dev中)。