Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET上的另一个MVC实现:FubuMVC

ASP.NET上的另一个MVC实现:FubuMVC2011-04-17 infoq 在ASP.NET MVC 正式版发布前,Jeremy D.Miller 和Chad Myers 就在ASP.NET MVC的早期 版本上进行了一些工作,并对底层实现做了一些修改。后来他们改掉了几乎所有的ASP.NET MVC实现,于是决定构造另一个MVC实现FubuMVC ,不久后Mark Nijhof 被邀请加入项目并成 为主要成员。

Fubu代表“For us,by us”。现在FubuMVC除了使用 ASP.NET Routing外,不使用任何ASP.NET MVC的实现代码,而ASP.NET Routing则已经包含在 .NET Framework 3.5 SP1中。

Jon Arild Tørresda询问了Chad Myers, ASP.NET MVC与FubuMVC之间最大的不同是什么:

如果非要选一个,我选择“组 合对继承”。这是一个设计上的基本区别,但并不是说ASP.NET MVC的设计不好,只是 我认为ASP.NET MVC在类结构设计上倾向于使用继承,因而无法像使用组合那样易于设计动态 的Web应用程序。

FubuMVC是一个前端控制器 (Front Controller)框架。Chad指出 这个模式的两个主要目标是:

◆分离对请求的不同关注点

◆允许使用组合的 方式构造响应,以发回给客户端

对于前端控制器,Chad解释道:“我们不是不 能使用ASP.NET MVC来实现前端控制器,但是这非常的困难”。

在FubuMVC中有 很多实现方面的决定,其中之一是在Controller的Action执行前后所执行的“行为 ”。Chad解释了为什么他们管它叫行为,以及它在FubuMVC中的意义。

当我在一 个Virual ALT.NET(VAN)会议上向一些人演示FubuMVC的早期版本时,Steven Harman (http://stevenharman.net)建议我将之称为“行为”,因为这个词语准确描述 了所发生的事,我有点喜欢这个名字。

在FubuMVC中,行为的实现方式实际上是装饰 模式和职责链模式的混合体。

行为对请求管道拥有完全控制权,它可以添加或修改请求,动态选择需要执行的action以 及是否要执行action,它可以修改或者完全替换action的输出结果,并且可以在完成请求处 理后执行一些代码。实际上,生成显示结果本身也是一个行为。FubuMVC使用行为本身来实现 基本的功能,这些基本功能和行为可以根据需要被替换或修改。

Mark Nijhof在他的 文章FubuMVC and the Front Controller style framework中展示了这个管道:

<