首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合菜鸟

2012-12-21 
ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者ASP.NET MVC 框架是 .NET 平台 Web 开发

ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者
ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者

ASP.NET MVC 推出已经有3年多了。现在社区里面看,在学习 MVC 框架的人越来越多。但是绝大部分都无法入门。原因是 MVC 框架和 WebForms 的开发方式相比,有门槛,它并不适合初学者入门学习。

从1991年微软推出VB 1.0以来,微软一直在走一条路线,就是让完全不懂开发的人很快能上手它的开发工具。好处在于,处于金字塔低端的入门开发者数量众多,让这些人迈入开发者的行列一度使得Windows平台的软件丰富和廉价。

微软从做Word起家,当其他排版软件还在使用复杂的格式命令的时候,微软则将WYSIWYG进行到底。微软的开发工具承袭了这样的价值观——图形化设计界面,将数据和界面绑定,编写简单的代码,一个程序就完成了。

在本世纪初,应用程序向Web迁移的大趋势已经不可阻挡,微软则希望通过Web Forms,继续它的傻瓜开发工具的神话,然而事实上却是不奏效的。HTTP协议并非Windows API,HTTP分割出客户端和服务器端,这使得状态跟踪和事件响应变得非常复杂。最糟糕的是,微软虽然极力隐藏一个Web程序和桌面程序的不同,但是事与愿违,入门开发者无法适应此间的差异,所以程序总是无法按照他们的预期运行。

回归本源成了业界的共识,RoR、Struts、Django,在各自的平台上流行开来,但是到了微软这里,事情却不一样了。因为微软培养起来一个庞大的,但是相当初级的用户群体,向这样一个群体推广它的 ASP.NET MVC,困难重重。.NET开发者的现状是什么呢?几乎完全不会编写程序,他们只能编写简单的代码,把控件粘合在一起;极度依赖GUI的开发工具,善于使用鼠标,而不怎么用键盘;围绕“控件”编程,用用户的思维设计程序,控件重用代替代码重用;对于HTTP和HTML几乎无知。

当然,从相对角度说,初学者在各个平台上都是存在的。但是.NET领域的奇怪现象是,一批一批初学者被按照操作工那样训练使用微软独特的开发方法,固化定形成熟练的操作工——而不是转化为更高阶的开发者。在其它平台,API的使用者->API的编写者->系统架构设计是一个自然的进阶路线,而.NET平台则是控件的使用者->控件的熟练使用者。

有理由相信,C# 3开始增加的一系列语法特征是为Entity和MVC赶场出来的。和其他平台不同的是,微软有一个法宝,就是它同时是语言的创造者和框架的开发者,它可以为框架而丰富完善它的语言。但是这就造成了一个很奇怪的现象。

一个原有的C#开发者,面对Lambda表达式、扩展方法一片茫然,相反一个Ruby程序员却可以轻松看懂C# 3的程序。毋庸讳言,C# 4和C# 1有了本质的不同,这种变革甚至比VB6到VB.NET更加激进。

对于一个ASP.NET开发者来说,不得不看到,MVC框架让他之前积累的经验完全无用武之地。MVC(这里说的MVC都是ASP.NET MVC)使用的LINQ(虽然LINQ并非MVC所必需,但是LINQ/Entity搭配MVC的组合是不争的主流,如果你看过MVC源代码,你会发现LINQ在MVC内部无所不在),以及Lanbda表达式、各种接口/委托,依赖反转的编程模型,使得开发者几乎需要重新学习一种新的编程语言。要想领会这个框架的设计思路,则是这些开发者面临的第二重考验。

再者,MVC彻底将程序员从UI设计上解放开来,但是在实际开发上并非如此——团队结构没有变化,程序员同时兼具交互设计师和美工。在ASP.NET时代,一个程序员虽然不一定能设计出很好的界面,但是至少它能工作。而抛弃了控件的视图,则是对他们很大的挑战。

MVC倡导的价值是CoC(约定优先于配置),这和乐高玩具一样的ASP.NET WebForms完全不同。控件、页面、code behind约束了一个程序的结构,虽然笨拙,但是坏不到哪里去。而MVC则不同,MVC的约定是无形的,一个没有学习过这些约定的程序员投入到开发中,他简直就是一个破坏者。一个开发者,它可以打破MVC约定的一切,编写随意的代码,这些代码看似还能工作——事实上比不能工作更糟。

ASP.NET程序员习惯于IDE给他们错误提示,然后修改程序,直到可以交货。你删除一个aspx文件,或者破坏了页面文件的结构,IDE马上就给出错误,直观地告诫开发者此路不通,所以不会出现大错。而MVC则不同——它更像开发者在写一个自由的类库。很可能一个程序还没有交货就被破坏得无法交货。

MVC框架倡导的其他价值包括敏捷、测试驱动开发、领域驱动开发、持续集成、restful url、低调的javascript等等,无论从开发思维还是项目管理上,都让现有的开发者觉得棘手。

很多书籍、blog都在向现有的 ASP.NET 开发者宣扬 MVC 框架的种种优势。然而事实上并非如此,MVC 与其说比 ASP.NET 传统的开发模式有优势,是因为它的门槛隔绝了初级的开发者,那些优势无不来自标准化、符合约定和敏捷的流程,而并不是 MVC 框架本身——让新手使用 MVC 只会带来灾难。

MVC是为熟练掌握web标准和同时渴望敏捷开发又不失严谨的开发者准备的,但是这有些滑稽——因为这个群体的大多数人都更愿意使用非微软平台的产品。也许MVC还适合那些以C# 3/4为起点的开发者,但不是是现在的这批,这需要时间的证实。

随着html5的问世,websocket,xmpp,nodejs等等新技术/标准将会对现有的技术再一次洗牌,我们拭目以待。
[最优解释]
sf。。。。。。。。
[其他解释]
学习。
[其他解释]
ASP.netMVC绝不是MVC设计模式,更不能算是所谓MVC框架,
JAVA的SSH本来就很糟糕了,ASP.netMVC一脉相承,

ASP.netMVC对MVC设计模式的支持甚至还不如winform和WebForm,SL
充其量和js相当,但遗憾的是JS在客户端,而asp.Net隔山打牛

[其他解释]
当我们实现了一个业务,
既可以用asp.netWebForm去呈现,
也可以用html+js去呈现,
也可以用winform,SL等其他UI平台去呈现,
你只要为这几种UI准备相各自的通用的视图驱动器就可以了
这才是MVC的,

asp.netMVC,要是非要往MVC上扯的话,充其量算作一个html+js的视图驱动器空壳,
而微软并没有提供和数据分离的,动态的驱动界面的手段,
[其他解释]
蹭分,学习
[其他解释]
楼主的观点有偏颇
[其他解释]
飞翔哥:
什么是“和数据分离的,动态的驱动界面的手段”

[其他解释]
必火贴!
------其他解决方案--------------------


路过
[其他解释]
路过,路过,学习学习,顶顶
[其他解释]
原创吗,写的不错。
[其他解释]
不同意楼主的说法,初学者最好直接接触asp.net mvc和http协议,避免成为楼主说的“控件的熟练使用者”。原因不在于技术,asp.net mvc和webform并无本质不同,它们的基础对象都是一样(Context,Request,Repsonse),用webform一样可以实现mvc模式。问题在于人,开发者最初迈出的那一步,对他的方向和习惯影响非常大,当他习惯了控件的小甜头之后,会没有耐心了解底层的原理。
[其他解释]
总结得好,一直就有这感觉。。
[其他解释]
恩,不错,学习,支持原创
[其他解释]
asp.net mvc 和 entity framework 没有关系,一个是领域层前面的应用层,一个是领域层后面的持久化技术,两者风马牛不相及。如果硬说它们有关系,那也是食客和饭馆的关系,方便而已。asp.net的本质仅仅是对web请求上下文的封装,不要赋予他过多的含义,否则就回到了webform的老路上。
[其他解释]
...........................
我现在正努力成为控件熟练者!
[其他解释]
路过学习,MVC 3很有鸭梨啊
[其他解释]

引用:
当我们实现了一个业务,
既可以用asp.netWebForm去呈现,
也可以用html+js去呈现,
也可以用winform,SL等其他UI平台去呈现,
你只要为这几种UI准备相各自的通用的视图驱动器就可以了
这才是MVC的,

asp.netMVC,要是非要往MVC上扯的话,充其量算作一个html+js的视图驱动器空壳,
而微软并没有提供和数据分离的,动态的驱动界面的手段,

不要说得那么抽象,一点也看不明,说了等于没说

[其他解释]
mvc怎么会不适合初学者了
[其他解释]
写的非常好!
太棒了。

完全赞同lz的观点。
[其他解释]
这个我觉得要看是怎样看的,如果抽象看,感觉都是一种思路,具体细节就不同了。比较开发的思路有了变化。不管适合不适合。编程总想急功近利,本就不对。静下心了。思索程序的奥秘吧。孩子。
[其他解释]
MVC只是个概念,ASP.NET的MVC框架确实有MVC的概念。
所谓概念只是一种方法,当然使用webform的同学们只要避免使用webform控件再加上ajaxpro等ajax框架。
也可以轻松实现MVC的思想。同时也可以应用webform的其他特性。

我认为MVC思想可以学,但没必要追求MVC框架,不过可以学习一下其中优秀的部分。例如清晰的模块化设计思想。

另外个人觉得MVC框架只是个工具与LINQ一样,与其钻研这个。不如真正的把应用层面的基础打好。例如LZ说的HTML5/websocket 之类的才是真正需要钻研的。
[其他解释]
路过学习!
[其他解释]
写的不错
[其他解释]
留个名,万一火了呢。
[其他解释]
路过学习!
[其他解释]
   额,  初学者......
[其他解释]
LZ的写的不错   但是我个人觉得 其实MVC也适合初学者  
[其他解释]
java程序员学Web开发就要学strust一样,如果没有WebForm这种模式,初学者学的就是MVC了。

asp.net mvc可以说是在strust(重配置)和RoR(重约定)基础上的升级。MS在前台大胆的吸收了jQuery作为
其js框架也是开明之举。

显然,MS想让WinForm程序员无缝开发Web应用的理想没有实现的那么完美。。。这一点支持lz

但对于初学者如白纸一般,反而比较容易接受MVC的思想,倒是WebForm开发惯了难以舍弃直接数据绑定的便利。



[其他解释]
前些天 试用了下MVC 确实好多原先的开发习惯都被改变了 不过 不得不承认 用MVC做管理后台确实好快(因为后台对页面样式没太大要求)...
这篇文章 写的不错 顶一下 留个名先!  


[其他解释]
我是一个初学者,在哪里可以学习到mvc入门,最好有个小例子
[其他解释]
没学过asp.net mvc
[其他解释]

其它部分都很同意。。。

但是MVC其实很适用于初学者。。。
[其他解释]
MVC看起来像是界面与程序都分离了,不过做起来的时候才发现没有那么彻底
另外MVC开发东西个人觉得没有快捷,只是新出来一种强制分离的三层思想,基本都是EF+LINQ的使用
里面的AJAX我觉得jquery比软软封闭的js要好,就像大家用javascript而不用jscript一样,微软总希望强制把自己的东西塞给开发者
优缺点都存在,看情况使用工具
[其他解释]
发表几点个人看法:
1、微软最初的webform,本来是想让大家跳出mvc的圈子。webform其实和jsp没差哪,除了崩溃的控件
2、webform的事件机制很好,终于不用配置action、FORM了;
3、那崩溃的数据持久层,也被DataSet取代了,内嵌的方法甚至让我们可以通过Dataset的XML实现来彻底抛弃数据库,java?除了后来apache的一个xml映射的框架,我还真不知道别的数据持久层除了bean还有什么东西。IBM的BO不错,也是基于XML的实现,但是比起Dataset来,差太多。怎不知道现在的微软还搞什么MVC和三层架构(因为有人还故意把DataSet转换成一个结构体来用,我太崩溃了?难道三层架构都得照着struts做不成)
4、java在BS方面有强大的中间件支持,微软除了IIS,我还没看到别的。尽管目前有很多针对http加速的解决方案,但是,在要求更大的企业级开发中,webform仅仅是个小船而已(偏激了点,至少,央企和政府们全是java的解决方案)。
5、在桌面软件中,则完全会显示微软的优势,java,见鬼去吧。
6、本人java和.net全做,这两种语言都有我喜欢的优势。尽管什么都会做,但是我讨厌SSH那令人崩溃的配置,我讨厌那些自作聪明的服务提供,我讨厌hibernate,ibatis能让我稍微舒服点,我讨厌spring,尽管它能帮我做很多事。
综合来说,这两者的难度其实并未有太大的差别,微软更简单,java稍微繁琐一些。桌面系统微软全面占优,BS各显其能。其实在有针对性的优化过程中,java还是不错的,尽管.net也还行,大家爱用什么语言就用什么语言就是,没得挑这挑那的
[其他解释]
没学过MVC的飘过... 弱弱问一句 MVC真能成ASP.NET的主流吗?
[其他解释]
学习了,需要学的东西太多
[其他解释]
MVC真的是.net的框架的主流吗?
[其他解释]
路过的,asp.net webform,asp.net mvc都是用的说。。。。。。
[其他解释]
UP~~~
[其他解释]
该回复于2012-02-05 13:13:40被版主删除
[其他解释]
该回复于2011-11-16 10:10:25被版主删除
[其他解释]
该回复于2011-09-01 10:18:35被版主删除
[其他解释]
该回复于2011-09-26 10:41:35被版主删除
[其他解释]

引用:
java程序员学Web开发就要学strust一样,如果没有WebForm这种模式,初学者学的就是MVC了。

asp.net mvc可以说是在strust(重配置)和RoR(重约定)基础上的升级。MS在前台大胆的吸收了jQuery作为
其js框架也是开明之举。

显然,MS想让WinForm程序员无缝开发Web应用的理想没有实现的那么完美。。。这一点支持lz

但对于初学者如白纸一般……


Struts重配置和RoR重约定主要是Java和Ruby语言的差异。
白纸的观点,我觉得不对,是这样的,经过系统学习的程序员是一张白纸,而没有系统学习过的,从普通用户转来的开发者,充其量只是用来做纸张的纤维。
微软的想法是所见即所得,你见过软件,会用软件,你就能开发软件。很多ASP.NET程序员(事实上如我所说,如果没有微软这套傻瓜化的东西,他们根本步入不了程序员的门槛),他们一直在用用户的思维考虑程序,这两个DropDownList怎么联动,这里放一个Grid,里面装入什么样的数据,这个按钮按下去做什么……他们几乎不会编程,编写的代码只是为了把这些被他们称作前台的东西粘贴起来而已。
另外ASP.NET WebForms先于RoR出现。从这个观点看,如果没有RoR,也许.NET开发者是在ASP.NET和ASP之间选择。
[其他解释]
评论很热闹,似乎说的都很有理,学习了
[其他解释]
新人路过。。膜拜学习

MVC != asp.net MVC


[其他解释]
该回复于2011-08-25 10:39:41被版主删除
------其他解决方案--------------------


学习一下
[其他解释]
MVC确实是很好的东西,而且微软的平台也也很好,很全面,期待微软更加完善,有更多的人参与进来!
[其他解释]

学习...
[其他解释]
 学习...
[其他解释]
这具蛮好的.
[其他解释]
学习了!对于一个新手来说MVC确实很让我头疼!
[其他解释]
路过…………
[其他解释]
路过…………
[其他解释]
唔,我的想法是越是初学者才需要受框架约束的。

比如:页面里直接写业务代码、业务类不要直接读界面标签等。
就像初学C语言,不是所有功能都搞到一个main函数里。你得根据不同功能做n个函数。

[其他解释]
学习一下
[其他解释]
看看!!
[其他解释]
学习,,
[其他解释]
学习了...
[其他解释]
学习了
[其他解释]
学习了
[其他解释]
至于说用来限制你的技术门槛或其他门槛。这是必须要垮越的
“控件党”想深入学习,也从这里起步。
起步思想和观念不对只能做it里的滥竽
[其他解释]
顶一个
[其他解释]
我顶一下。
[其他解释]
很好的氛围...
[其他解释]
该回复于2011-09-16 11:04:16被版主删除
[其他解释]
学习。
[其他解释]
学习了
[其他解释]
其实对于程序员入门来说,微软的东西是再好不过的了……
[其他解释]
完全赞同!
[其他解释]
唉,其实都是0和1
[其他解释]
是吗?不太像啊
[其他解释]
我发现C#这个论坛特别爱讨论这类问题。MVC适不适合初学者,这个问题没多大意义。对于真正的初学者来说,什么新的,没有什么适合不适合,关键在于你有没有兴趣学这些东西。从汇编开始初学并不比从拖控件开始初学的高人一等,拖控件的也不一定一辈子拖控件,要看你肯不肯深入。在真正工作当中,一个项目牵扯的东西实在太多太多了,选用什么技术和什么框架只是其中一部分而已。
[其他解释]
顶起。。。
[其他解释]
学习了。
[其他解释]
看看,看看。。。。
[其他解释]
顶顶更健康!
[其他解释]
http://www.asp.net/mvc

mvcmusicstor.codeplex.com

引用:
我是一个初学者,在哪里可以学习到mvc入门,最好有个小例子

------其他解决方案--------------------


比winform的程序还丰富的交互应用界面

能否举个例子
[其他解释]

引用:
P哥指的是页面级别的状态维护吗


我是在尽量说清楚互联网公司的网页开发,与软件公司的企业web应用程序开发,的选择工具上的区别。
[其他解释]
对于互联网类的项目,如果说前端开发有什么框架的话,现在流行的也就是基于javascript框架产品的开发。微软的asp.net早在几年前已经在轻量级的交互网页编程方面甘拜下风,把前端开发让位给 jQuery 这类别人的产品。asp.net在4、5年之内都没有什么真正的作为。微软的asp.net项目组不过是打算步servlet那种应用的后尘,模仿java等等,带着一些web开发人员过把瘾就死。
[其他解释]
我先睡了,明天继续研究P哥
[其他解释]
引用:
现在的框架就是MVC

如果全副技能就是做网页,说它是框架有点过。普通的会做html/javascript/asp or php的最好。

如果你是做web企业应用,那么做一个比winform的程序还丰富的交互应用界面,它没有什么技术含量帮助你做这类程序。


[其他解释]
现在的框架就是MVC
[其他解释]
比如说我们看网页类的开发,那么多的内容,你搜索一下,其<form>是干什么的呢?甚至很难找到!这就很明确,这不是交互式应用程序,而且也不是靠服务器一遍一遍地下载html的。也就是说,假设你使用asp.net来编写这类页面的话,连form都不必有,也不用考虑本页的回发机制。既然网页类开发是不集中在页面自身回发机制的,在一个本来无足轻重的特性上作为你“吊起”自己的技术选择的筹码,是不明智的,你的网站应该敞亮一点综合各种“简单”网页开发技术,不论是MVP还是MVC都是不合适的。
[其他解释]
P哥指的是页面级别的状态维护吗
[其他解释]
每天回一帖 10分可用。
[其他解释]
mvc也不是很难学啊 
[其他解释]
学习了
[其他解释]
来学习,顶 一下。
[其他解释]
据说MVC是一种模式,不是框架。
[其他解释]
学习下,谢谢~~
[其他解释]
学习。
[其他解释]
学习~
[其他解释]
null
[其他解释]
null
[其他解释]
引用:
至于说用来限制你的技术门槛或其他门槛。这是必须要垮越的
“控件党”想深入学习,也从这里起步。
起步思想和观念不对只能做it里的滥竽

+1
[其他解释]

mark

热点排行