GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

ASP.NET 开发人员需要学习 ASP.NET MVC 么?

2009 年 5 月 06 日

最近几周,在博客、Twitter 和论坛上如火如荼地展开了一场讨论。讨论的内容是:开发人员是否应该使用或学习 ASP.NET MVC 。从“不推荐学习”到“所有 ASP.NET 开发人员都应该学习”,各种不同的观点层出不穷。InfoQ 对其中部分讨论内容进行了总结。

Rob Conerey SubSonic 之父,目前是微软 ASP.NET MVC 团队的一员)解释了为什么开发人员应该学习 ASP.NET MVC 。在文章的开始,他称 WebForms 是一个“巨大的谎言”。

WebForms 是个谎言,它是一个被种种谎言和欺骗所包围着的抽象机制。你对 WebForms 所做的一切都与 Web 无关 - 它帮你做了本该你自己做的事。

朋友们,这可是件大事(至少对我来说):你工作在谎言中。Web 是“无”状态的,它依赖一种叫做 HTML 的东西,并使用另一种叫做 HTTP 的东西通过电缆将 HTML 发来发去-你需要了解它、热爱它并在骨子里感受它。

Rob 列举了 7 个使用 ASP.NET MVC 的理由,或者用他的话说“避免被称为怪人的 7 个理由”:

  1. 可测试性
  2. 完全控制 HTML
  3. 可扩展
  4. 促使你思考
  5. 易于客户端 Javascript 编程
  6. 可以学到新的东西
  7. 有趣

然后总结到:

结论:Web 编程再一次充满了乐趣,至少对我和我的猫来说。当然这又是一个关于 WebForms 和 MVC 的比较,但是更直接一些。你几乎无法找到不学习 MVC 的理由 - 当然,对你来说可能还是有一两个理由,促使你继续使用 WebForms。

Joe Brinkman DotNetNuke 的全职开发人员)迅速的做出了回应,批评 Rob 没有找到一个“好”的学习 MVC 的理由,并列出了他自己的:

  1. 学习一种不同的架构
  2. 强迫你熟悉 HTML 和 HTTP
  3. MVC 促进了单元测试
  4. MVC 将使你意识到你对 WebForms 有多少是想当然的

Joe 总结道:

你真的应该试一试 MVC,但不是因为 Rob 所列举的那些原因。你应该尝试,MVC 是因为最终你会学到一些东西,它可以使你成为更好的 Web 开发人员,这与你最后选择了哪个平台无关。

Rob 和 Joe 基本上都同意,ASP.NET 开发人员应该学习 ASP.NET MVC,但是对于学习的原因还有争议。然而 Karl Seguin 持有不同的观点,他质疑道:“ ASP.NET MVC 是一个半成品么?”:

能够以更清晰的方式构造复杂的系统是一个好的开始,但是对于一般的 Web 开发,特别是与其他平台比较来说,ASP.NET MVC 还是要落后很多(Perl 是我能想到的唯一一个更糟糕的)。

最大的问题在于,它只是一个 VC - 没有对 Model 的考虑、支持和相关的工具。当你将自己写的数千行 repository/dal/linq/nhibernate 代码与其他 MVC 平台(通常只需要你的 model 继承一个类)比较时,你显然已经在生产力方面处于严重的劣势。但是深层次的影响更糟 - 你失去了 controller 和 view 上的内聚性,没有任何方法可以从 Model 的属性来自动生成 HTML 标签或者是客户端验证。

……

当然 ASP.NET MVC 也有好的方面,它的体系结构是可重用的,这使得像 S#arp Architecture 这样的项目得以实现。然而我仍然怀疑,这样的项目是否真的能够比集成的更好的框架更成功。

Jeremy D. Miller FubuMVC 的创造者之一)列出了一些正面的和负面的因素

负面的:

……除非你愿意卷起袖子构建你自己项目的体系结构来充当“M"、获取更好的测试性、拥有更简单的视图同步机制以及更高效的 Html helpers,否则 ASP.NET MVC 的生产力并不高……

正面的:

使用这个 MVC 框架很简单和直接,还可以根据需要进行定制。

Jeremy 总结道:

我觉得 ASP.NET MVC 最终会是一种比“被种种谎言和欺骗所包围着的抽象机制”更好的 Web 程序开发方式,但是现在它仅仅适合那些乐于尝鲜的人。

Jeffrey Palermo (目前正在撰写“ASP.NET MVC in action”)发表了“你不应该使用 ASP.NET MVC, 如果”:

  • 你对多态不是“非常”的熟悉
  • 你不喜欢在这个框架上构建应用程序
  • 你依赖于很多第三方的 UI 控件
  • 你不喜欢使用开源的程序

他继续说道:

ASP.NET MVC 不是一个“束缚你手脚”的框架,也不是一个“ASP.NET 入门”框架,你可以完全控制所有的东西。在 Web 的世界里,UI 还没有标准化到可以使用框架来控制,并以一种“标准”的方式来生成。相反数据访问已经可以了,我们知道我们需要创建、读取、更新、删除、级联存储、延时加载等等。很多 ORM 都支持这些操作,很多开发人员放弃了对数据访问的完全控制,因为这和 ORM(Hibernate/NHibernate)工作的方式非常相似。

虽然还有其他很多人也表达了自己的观点,但是 InfoQ 认为本文已经覆盖了绝大多数对于学习 / 使用 ASP.NET MVC 的观点。

查看英文原文: Should ASP.NET Developers Learn ASP.NET MVC?

2009 年 5 月 06 日 10:4121497
用户头像

发布了 63 篇内容, 共 20.4 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

甲方日常 3

句子

工作 随笔杂谈 日常

硬核科技:莱克立式吸尘器,引领家居清洁“新态度”

InfoQ_967a83c6d0d7

软件开发丨关于软件重构的灵魂四问

华为云开发者社区

软件 开发者 软件开发 代码 软件重构

ShardingSphere简介+实战

云淡风轻

ShardingJDBC

学习Python真的能找到工作吗?

代码制造者

Python 程序员 编程语言 低代码 零代码

开发者的福音,LR.NET模块化代码生成器

Philips

敏捷开发 快速开发 模块化流程 代码质量 .net core

架构师训练营0期11周

WW

我也没想到 Springboot + Flowable 开发工作流会这么简单

程序员内点事

java 14

【FCC前端教程】44关学习CSS与CSS3基础「二」

三钻

CSS 前端 FCC

化妆品行业与区块链的融合可减少甚至消除假冒伪劣

CECBC区块链专委会

区块链 化妆品

区块链 新基建定位下的新使命 2020新区势

CECBC区块链专委会

区块链 新基建

20年美团架构师一份“架构宝典”竟涵盖了架构设计和实践技巧?

周老师

Java 编程 程序员 架构 面试

新金融分布式架构之SOFAStack解决方案

阿里云金融线TAM SRE专家服务团队

mPaaS 客户端证书错误避坑指南

阿里云金融线TAM SRE专家服务团队

柔性电子拥有改变地球的能力吗?

脑极体

涵盖多场景区块链与政务结合 应用前景广阔

CECBC区块链专委会

区块链 互联网 数字政务

GrowingIO AWS 成本优化之路

GrowingIO技术专栏

AWS 成本优化

不得不了解系列之限流

梦朝思夕

限流

LeetCode题解:155.最小栈,使用两个栈,详细注释

Lee Chen

LeetCode 前端进阶训练营

微服务架构下,DLI的部署和运维有何奥秘?

华为云开发者社区

Docker 大数据 Serverless 数据湖 DLI

数据挖掘学习指南(转载)

Jackchang234987

数据挖掘 产品经理

oeasy教您玩转linux010106这儿都有啥 ls

o

分享一个阿里云轻量级开源前端图编排,流程图js组件——butterfly-dag

InfoQ_39ba186c207f

Java 流程图 flow canvas html/css

华为云会议的前世今生

华为云开发者社区

直播 云服务 华为云 视频编码 视频会议

GitMaster 更新v1.9.0,支持Gitea,Gist拥抱黑暗模式

neo

gitlab tree gitee GitHub、

【写作群星榜】8.15~8.28 写作平台优秀作者 & 文章排名

InfoQ写作平台官方

写作平台 排行榜

有为而治:平衡吞噬世界的系统之熵

IT民工大叔

屏幕共享接入指南

anyRTC开发者

WebRTC 在线教育 直播 RTC

币期权DAPP 8月28日全球同步耀世上线,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

全民加速节:动态加速在在线教育应用上的最佳实践

阿里云Edge Plus

在线教育 CDN

架构师训练营第 11周作业和感想

tuuezzy

极客大学架构师训练营

DNSPod与开源应用专场

DNSPod与开源应用专场

ASP.NET开发人员需要学习ASP.NET MVC么?-InfoQ