ASP.NET MVC——螺旋进步的产物

转载 2013年12月03日 11:35:19


ASP.NET MVC——螺旋进步的产物

对于微软为什么要推出ASP.NET MVC,我们是无从得知的,也许是因为JavaEE平台上有Struts,也许是因为MVC太流行,也许微软是想使得自己的Web App平台更完善,总之我们只能猜测。但是如果回顾一下微软的Web App平台进化过程,还是很有意思的。

ASP——微软最早为Web开发做出的贡献可能就是ASP了,这个动态语言把动态网页开发的难度空前降低了。但是,在很多人兴奋的用ASP写着一个又一个动态网页时,它的缺点渐渐暴露:语言过于简单,没有面向对象支持、没有好的IDE支持、动态脚本和静态HTML杂糅在一起,使得修改及维护极为困难。

Web Form——说实话,即使是用现在的眼光看,微软推出的Web Form编程模型确实是很有创意,也很实用。微软开创性地将桌面应用的开发模式引入Web应用开发:拖控件、写事件处理、运行...一切都那么美好,而且前段静态代码和后端程序完全隔离在两个文件里,并且用户可以使用.NET平台上任意一种语言进行后端编程。对程序员来说,使用C#进行编程比使用ASP实在是舒服太多了。所以,Web Form模型可以说成为.NET Web App开发的代名词,所有基于.NET平台的Web开发人员都熟悉并接受了这种模型。

ASP.NET MVC——就在Web Form大行其道时,微软推出了ASP.NET MVC。严格说,ASP.NET MVC和Web Form是不具有可比性的,Web Form是一个完整的新型模型,从顶层到底层是一整套的东西,而ASP.NET MVC只是给Web Form穿了件MVC样子的外套,它应该是基于Web Form的一种编程方式模型扩展。但是,从开发人员看,ASP.NET MVC的推出确实大大改变了我们的开发方式,很多Web Form下的方式不被提倡了(你仍可以用,因为ASP.NET MVC也是基于Web Form的),例如,曾饱受赞扬的服务器端控件再度被抛弃,转而再次使用客户端控件,事件驱动模型被抛弃,转而使用了类似传统的Url跳转处理模型。而且在数据验证等方式上与Web Form下提倡的方式有了很大变化。

如此看来,真像是一个轮回,似乎ASP.NET MVC又把我们带回到了ASP时代:服务器端模型不让用、事件驱动机制不让用、类似Desktop App的开发方式不让用...我们似乎从Web Form回到了传统的ASP时代。但是,真的是这样吗?当然不是!

只要稍微用一下,就知道虽然ASP.NET MVC提倡我们废除Web Form下的很多东西和习惯,但是绝不是让我们“回归原始”,如果非要说是一个轮回,那也应该说是一个螺旋式的轮回,是上升式的轮回。

记得马克思主义哲学中有个很经典的命题:对于新事物来说,道路是曲折的,前途是光明的。也许,Web App模型的发展就印证了这个观点吧。也许,服务器端控件、事件驱动模型这些东西一开始就是不适合Web App的,微软走了很多弯路,现在找到了正确的方向。抛弃的痛苦的,我们要抛弃曾经认为多么习惯并且倾注了大量心血的东西,但是,事物被否定后,剩下的的一个蜕变出的新事物,是一个更优秀的东西。

例如,我们抛弃了用了多年的务器端控件、事件驱动模型……但是我们得到了低耦合的、关注被分离的、符合MVC模型的新的Web模型。要敢于否定,才能获得新生。微软是,我们也是。

ASP.NET MVC带来的变化

下面,我们看看ASP.NET MVC到底让我们否定什么?又能得到什么。

1.服务器端表单控件。

由于ASP.NET MVC的特质,服务器端的表单控件不再被提倡使用,例如我们的文本框,不再使用asp:TextBox,而是使用传统的input,或直接让Html.TextBox生成。总之,很多服务器端控件被我们废止了。甚至GridView这样曾给我们带来无限快感的老朋友,也不再被提倡使用。但是,并不是说不能用任何服务器端控件,例如,为了实现母版,我们的ContentPlaceHolder还是必须要使用的。

2.事件驱动模型。

既然服务器端表单控件已经不提倡使用了,事件驱动模型自然也不被提倡,两者本来就是相辅相成的。在ASP.NET MVC中,当某个按钮被点击,你不要再习惯性想到应该在相应的aspx.cs中有个时间处理方法,你应该想到的是该有某个Controller中有个Action来处理这个事件。实际上,在ASP.NET MVC中,提倡不要在aspx.cs中写任何逻辑代码。甚至应该当他们不存在。

3.数据绑定

对于列表式表格数据,你一定习惯了GridView的数据绑定,可是,从你使用ASP.NET MVC开始,这不在被提倡了。你应该自己处理数据的显示。当然,我们也可以期待未来的ASP.NET MVC正式版中会有一个强大的Helper来帮我们做数据显示。

ASP.NET MVC的收益

你一定想知道,我们为使用ASP.NET付出了如此惨烈的代价,那么我们能得到什么?从我个人认为,你至少得到了以下东西:

1.清晰的、关注被分离的代码;

2.更容易的测试及维护;

3.更符合MVC的表示层;

4.你可以向Java程序员自豪的说:我现在也用MVC模式了,而且不用写任何XML!

 

 

 

网友激烈讨论C#会不会就这样螺旋没了?很值得研究。

  成长群196997099

ASP.NET MVC——螺旋进步的产物(zt)

ASP.NET MVC——螺旋进步的产物 对于微软为什么要推出ASP.NET MVC,我们是无从得知的,也许是因为JavaEE平台上有Struts,也许是因为MVC太流行,也许微软是想使得自己的Web...
  • snowfen
  • snowfen
  • 2009年05月06日 09:12
  • 133

ASP.NET MVC——螺旋进步的产物

     原文:http://www.cnblogs.com/leoo2sk/archive/2008/11/05/1327466.html      对于微软为什么要推出ASP.NET MVC,...
  • llm89721630
  • llm89721630
  • 2010年09月16日 14:32
  • 246

软件测试阶段以及产物

无论是采用瀑布式还是其他的产品生命周期模型,软件测试分为如下几个阶段: 1、测试需求分析阶段。测试需求分析阶段主要工作是获得测试项目的测试需求(测试规格)。 输出产物:《可测试性需求说明书》和《测...
  • fan641012
  • fan641012
  • 2011年11月29日 16:45
  • 1244

ASP.NET MVC异步处理请求的意义

转自:http://www.cyqdata.com/aspnetmvc/article-detail-52926 http://blog.csdn.net/niewq/article/detai...
  • mituan1234567
  • mituan1234567
  • 2016年04月29日 10:21
  • 490

ASP.NET MVC 入门4:layout的使用

 http://www.cnblogs.com/iamlilinfeng/archive/2013/02/28/2934397.html
  • peien3382
  • peien3382
  • 2014年10月08日 11:16
  • 9077

ASP.NET MVC 优点

1、不再有ViewState; 2、简洁的HTML代码:最终生成的 HTML代码完全由自己控制,不会生成任何“垃圾代码”; 3、更快的服务器端处理和客户端呈现:MVC只简单地处理“模板”,...
  • payne1010
  • payne1010
  • 2012年07月11日 17:18
  • 631

ASP.NET与ASP相比,主要有哪些进步? 执行效率的大幅提高 强大的开发工具支持 多处理器环境的可靠性 安全型

参考答案: 执行效率的大幅提高  ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高.  ASP.net是把基于通用语言的程序在服务器上运行。不像以前的AS...
  • chaojifeifeima
  • chaojifeifeima
  • 2014年04月23日 16:17
  • 1110

Asp.net WebForm 和 Asp.net MVC 都不是好用的Web开发技术

我们如何评价微软呢? 封装大师,是最贴切的。本人不认为微软在计算机领域有任何值得称道的建树,微软和国内的那些商业性质很强的计算机类公司一样,不是一家技术主导的公司,仅仅是恰好做IT行业而已。 最近这...
  • unistd
  • unistd
  • 2012年06月17日 10:50
  • 3505

AspNet MVC4 教学-9:Asp.Net MVC4 利用Layout的几种方法的快速Demo

利用Layout的几种方法的快速Demo
  • vinglemar
  • vinglemar
  • 2015年04月08日 18:34
  • 4413

ASP.NET MVC下基于异常处理的完整解决方案

EntLib的异常处理应用块(Exception Handling Application Block)是一个不错的异常处理框架,它使我们可以采用配置的方式来定义异常处理策略。而ASP.NET MVC...
  • rise51
  • rise51
  • 2016年04月17日 08:46
  • 743
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET MVC——螺旋进步的产物
举报原因:
原因补充:

(最多只允许输入30个字)