当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Web开发模式的颠覆者:ASP.NET MVC

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

Web开发模式的颠覆者:ASP.NET MVC


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 85 ::
收藏到网摘: n/a

2008年3月微软针对ASP.NET 3.5发布的MVC框架(Preview 2 版本)是一个真正意义上的ASP.NET MVC框架。至今,短短4个月内此框架已经发展到Preview 4版本。许多国内外业界人士称该框架为其前基于Web表单开发模式的历史性“颠覆”。本文站在对ASP.NET MVC框架与传统ASP.NET Web表单开发模式进行简明理论对比的角度对ASP.NET MVC框架的发展前景作出初步展望。

一、引言

一直以来,软件架构师们在开发软件的方法及架构方面争论不休。这样的一些典型的例子包括针对ORM与存储过程、REST与SOAP结构的讨论,等等。最近一段时间,在微软社区内又展开了一场有关ASP.NET Web表单与ASP.NET MVC框架的讨论。许多人认为ASP.NET MVC框架最后将会取代Web表单机制,而也有一些人坚持认为ASP.NET MVC框架未来不可能取代如今已经牢牢占据.NET平台上ASP.NET开发统治地拉的Web表单技术。那么,究竟ASP.NET MVC框架是否会取代Webforms呢?

值得注意的是,从一开始,微软的众多权威人士都一致表示:ASP.NET MVC框架仅仅将作为Web表单方案的一种可能的替代方案,而不会彻底取代它,而Web表单也不可能取代ASP.NET MVC。因此,真正的发展趋势将是:ASP.NET MVC与Web表单将共同存在,ASP.NET MVC决不会成为Web表单的取代者。所以,如果你比较喜欢ASP.NET MVC,你可以选择使用它;而如果你感到Web表单更易于上手,你也可以尽情地按照你的传统方式继续使用它。也就是说,两种途径都只是针对不同的选择、不同的方法而已,而提供给开发者不同的选择本身是一件好事,仅此而已。当然,不同的选择也完全可以应用于其他的平台,特别是另一块比较火的Java开发平台。

二、ASP.NET Web表单方案存在的问题

ASP.NET Web表单方案存在哪些方面的不足呢?Web表单的指导思想是把Windows桌面应用中的表单模型引入到Web应用程序的开发中。这种模型很快就吸引了大批的传统Windows桌面应用开发程序员,特别是以前的VB 6.0程序员。今天,许多VB 6.0开发者已经转到了ASP.NET Web开发领域,但是他们并没有基本的HTTP与Web基本知识。为了模拟传统型Windows桌面应用程序中的表单开发体验,Web表单引入了事件驱动的方法,而且还引入了Viewstate和Postback等相关概念。最终,Web表单技术知彻底地攻克了Web中无状态特征这个难关。随之而来的是,Viewstate和Postback带来了大量的问题,从而提高了Web应用程序开发的复杂性。例如,即使一些非常简单的Web页面也有可能产生大于100KB尺寸的Viewstate,这当然会在某些情况下严重影响系统的性能。此外,开发人员还无法控制Web表单生成的HTML;而且,ASP.NET服务器控件生成的HTML既混杂有内联方式也包含不符合标准的过时的标签。Web表单所带来的另一个问题是,与JavaScript框架的集成比较困难,这主要是因为生成的HTML的命名惯例所造成的。此外,Web表单相应的页面生命周期太复杂了,在整个ASP.NET框架中所有内容都是紧耦合型的并且仅使用一个类来负责显示输出和处理用户输入。因而,单元测试几乎是一项不可能的任务。而我们都知道,在现代软件开发中,特别是当我们遵循敏捷软件方法论及相应惯例开发软件时,单元测试是很重要的。既然Web是无状态的,那么,Postbacks和Viewstate就不会完美的解决方案。