介绍ASP.NET MVC的实现

开发 后端
本文介绍ASP.NET MVC实现,以及介绍在FubuMVC中,行为的实现方式实际上是装饰模式和职责链模式的混合体。

在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使用行为本身来实现基本的功能,这些基本功能和行为可以根据需要被替换或修改。

【编辑推荐】

  1. ASP.NET中的HttpWorkerRequest对像
  2. 详解四个ASP.NET状态
  3. ASP.NET AJAX中ScriptManager控件
  4. SuperPreview会调用ASP.NET或者PHP来渲染网页
  5. ASP.NET中的ScriptManager控件
责任编辑:佚名 来源: ctocio
相关推荐

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 13:16:04

MvcAjaxPaneASP.NET MVC

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-07-23 18:14:17

MVC生命周期

2009-07-28 14:47:18

ASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2009-06-01 10:23:31

asp.net mvcasp.net mvc.net mvc框架

2009-09-10 09:50:47

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 16:02:39

ASP.NET MVCPagedList

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-03-31 13:12:05

ASP.NETMVC表单验证

2009-12-21 10:05:10

ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2011-07-04 15:41:14

AjaxASP.NET

2011-09-22 10:58:56

ASP.NET
点赞
收藏

51CTO技术栈公众号