自从它推出RTM之前,我一直在将ASP.NET MVC用于个人项目.
我正在为同事准备一个演示文稿,向他们介绍ASP.NET MVC的基本概念,并向他们展示如何在我们的环境中使用它.
我的演讲有15分钟的限制.有很多信息要传递(特别是如果你考虑像MVCContrib和各种博客文章这样的项目).
我应该关注哪些主题?
一些背景:我在一家数字代理公司工作.我的同事是具有3年以上ASP.NET经验的.NET开发人员.
到目前为止有什么建议:
想要切换到ASP.NET MVC的原因
路由
ActionResults(提供不同回复的能力)
请求 - 响应内部
可测性
脚手架(T4模板)
对HTML输出进行细粒度控制
关注点分离 ()
ASP.NET WebForms和ASP.NET MVC之间的差异
AnthonyWJone.. 8
你只有2或3个要点的时间.
要掌握的最重要的概念是请求到达控制器然后控制器选择什么视图来呈现控制器已经生成的结果.
下一个重要的概念是,当您为控制器和模型创建单元测试时,MVC对"经典"ASP.NET有很大的胜利.没有这个MVC只是皮肤猫的另一种方式.
最后一点我将重点关注URL的结构,不是因为它很重要,而是因为我们喜欢具有干净感觉的东西,MVC Urls可以做到这一点,这可能有助于产生积极的响应.
避免继续没有服务器控件(这不完全正确),因为这可能会导致负面反应.一般来说,避免提及与ASP.NET表单相比没有做什么(虽然没有任何需要Viewstate值得一提).你知道,所带来的好处会影响那些缺失(或不必要)的东西,但是你的观众却没有.保持积极态度.
你只有2或3个要点的时间.
要掌握的最重要的概念是请求到达控制器然后控制器选择什么视图来呈现控制器已经生成的结果.
下一个重要的概念是,当您为控制器和模型创建单元测试时,MVC对"经典"ASP.NET有很大的胜利.没有这个MVC只是皮肤猫的另一种方式.
最后一点我将重点关注URL的结构,不是因为它很重要,而是因为我们喜欢具有干净感觉的东西,MVC Urls可以做到这一点,这可能有助于产生积极的响应.
避免继续没有服务器控件(这不完全正确),因为这可能会导致负面反应.一般来说,避免提及与ASP.NET表单相比没有做什么(虽然没有任何需要Viewstate值得一提).你知道,所带来的好处会影响那些缺失(或不必要)的东西,但是你的观众却没有.保持积极态度.
路由
ActionResults的灵活性
将不同视图连接到同一个Controller Action(即Mobile视图)
单元测试的主题可能对于15分钟的会议而言太大了,但如果您的开发人员已经在使用TDD,我会添加它
我不得不为我的老板写报告,证明我为什么要在webforms/Nettiers上使用MVC.我在博客上写了我的报告http://ivida.co.uk/2011/05/11/mvc-nhibernate-vs-webforms-nettiers/
我意识到你只有很短的时间跨度,但你可能会从下面的列表中找到一些想法....
MVC的好处
ASP.MVC是针对Web Forms与其他开发平台相关的批评而编写的.虽然Web Forms为开发人员提供了一个快速应用程序开发框架,并且是为了"模仿"Win Forms中使用的开发方法而编写的,但它使得在其他平台中实现某些实践变得困难,并且被视为良好开发的基础.1.1.Testable
MVC允许编写自动化单元和集成测试.这具有许多明显的优点.
a)大大减少了手动测试的需要; 通过显着减少手动测试的数量,创建单元测试的前期成本通过下游回报.
b)可以在整个开发过程中运行; 这是非常宝贵的,因为它允许开发人员确保他们不会对代码库进行重大更改.
c)让开发人员有信心对代码库进行更改,因为测试会显示任何错误.
d)导致更加严格的代码库,因为代码在整个开发过程中已经多次测试,而不是通过零星的手动测试提供的代码.
e)每个测试都是封装在代码中的功能要求.如果要求只有具有角色X的用户可以执行活动Y,则测试证明满足此要求.如果开发人员在一段时间后返回代码库,因为通过运行测试可直接查看需求,这就变得非常宝贵.
开发人员可以根据项目的要求编写尽可能少的测试代码.如果项目暴露于规范的变化,那么进行测试可以显着加快变更的实施.对于小型低影响开发,可以缩减自动化测试以主要涵盖创建/更新和删除方案而不是读取方案.
编写测试本身就是一门艺术,开发人员随着时间的推移会变得更好.在没有编写任何测试代码的情况下,有经验的开发人员可以在相似的时间内使用MVC或Web Forms创建项目.编写测试可能会使开发时间增加20%,但会大大缩短系统测试的时间.
进行测试还可以大大减少实施变更所需的时间,如果变化很大,实际上可能允许进行变更,否则将被视为过于冒险或太耗时.
1.2.坚持良好的软件设计原则
ASP.MVC遵循设计良好和可维护软件的一些良好的原则,例如:
“Don’t Repeat Yourself (DRY) “Separation of Concerns” (SoC)
关注点的分离(不将UI逻辑与底层行为混合在一起)是帮助开发人员处理复杂性的基本原则.在同一个对象或文件中混合不同的职责(比如将大部分逻辑放在文件后面的代码中,如处理编辑,取消和编辑回发事件)会引发维护问题并使代码难以更改且难以阅读.MVC规定了应该写入某些类型的对象的位置,使得生成的代码库更清晰,更容易理解.
1.3.MVC是规定性的
因为MVC遵循良好的软件设计原则,所以它规定了应该开发某些类型的代码的位置.这在团队环境中非常有用,因为它比Web窗体更加标准化项目结构.一旦开发人员熟悉MVC项目结构,就很容易在哪里寻找某些类型的代码.这样可以更轻松地处理其他开发人员的代码; a)由于处方和b)因为运行单元测试将确保其他开发人员不会破坏现有功能.它还可以帮助开发人员决定应该在何处开发某些类型的代码以及如何分离代码以便于维护.MVC项目的规范性质也证明是有用的,允许该团队的开发人员谈论他们面临的问题和问题,而无需了解项目的详细实施.
1.4.MVC可以轻松地与JavaScript框架集成
自2004年推出Google Suggest以来,客户端Web开发已经发生了翻天覆地的变化.这一变化一直是关于AJAX功能的实现.AJAX(异步JavaScript和XML的简写)是客户端使用的一组相关技术,用于创建丰富的交互式和响应式Web应用程序.使用AJAX,Web应用程序可以在后台异步检索服务器中的数据,而不会干扰现有页面的显示和行为.AJAX使用HTML和CSS的组合来标记和样式信息.使用JavaScript访问DOM以动态显示,并允许用户与所呈现的信息进行交互.
由于跨浏览器的标准合规性的不同实现,这种类型的功能过去常常难以编程.现在这已成为一个问题a)由于更好的标准兼容性和b)更加显着,因为JQuery等JavaScript框架的开发允许您编写适用于每个浏览器的代码.
MVC中的"V"代表"View",仅处理HTML和JavaScript的前端交付.MVC允许与JS框架(如JQuery)轻松集成,并极大地简化了使用此类框架创建富客户端体验的过程.(注意JQuery现在作为ASP.NET 2010的标准版本出现,微软现在正在积极地,或许可以为JQuery代码库做出贡献.)
这种简化的集成使您可以更轻松地开发符合用户在现代网站上所期望的性能的用户体验.这是一个微妙的观点,但我相信我们不应该忽视这一点.我们的客户将越来越多地根据他们对更广泛的互联网的使用,对他们如何与网站互动产生隐含的期望 现在很少有商业网站没有实现AJAX功能和它提供的灵活的响应接口.不考虑发展丰富的前端,将越来越多地使我们的产出与客户的期望不相称.
1.5.网络消费正在发生变化(快速)
摩根士丹利预测,到2013年中期(即2年半之内),使用移动设备访问网络的人数将超过固定互联网/台式机.
(http://gigaom.files.wordpress.com/2010/04/mobile-chart2.png)
这跟MVC有什么关系?我相信MVC是一个更好的平台,可以将内容提供给各种设备,因为它更容易实现JS库,并且它允许开发人员轻松控制HTTP响应的内容(详见下文).
1)更容易实现AJAX - 移动设备上的3G连接目前没有与宽带相当的带宽.AJAX通过较慢的连接大大提高了页面的性能,因为您只返回所需的数据(由浏览器格式化)而不是数据和整个页面.
2)MVC使开发人员能够更好地控制从请求返回的数据.这可以通过实际代码示例看到,但在两行代码中,开发人员可以返回整个页面(使用母版页等),JSON(JavaScript Object Notation),这是AJAX请求,XML或任何其他格式中选择的数据格式需要.
代码示例:
//Try doing this in webforms If (IsJson) { return this.JSON(model); } Else if (IsXml) { return new XMLResult(model); } else { return View(model)l; }
使用Web窗体实现这种级别的控制要困难得多.严格控制HTTP响应中返回的内容可简化各种设备(如传统浏览器或智能手机应用程序)或其他平台(如SharePoint)中的应用程序的内容开发.2.1.1.6.MVC使用RESTFul URL
MVC使开发人员可以完全控制URL.使用WebForms,URL匹配代码的基础文件结构.使用MVC,您可以使用所谓的"Route Registrar",它是一个将URL与处理请求的资源相匹配的文件.
完全控制URL有两个明显的优点:
i)如果项目需要人类可读的URL或搜索引擎优化,那么URL控制是一个很大的优势.考虑以下:
www.mywebapplication.com/users/alex.hardman(即检索名为alex.hardman的用户)
而不是
www.mywebapplication/users/getuser.aspx(会话中传递的名称)或www.mywebapplication/users/getuser.aspx?username = alex.hardman
第一个URL(通过MVC)更具人类可读性和搜索引擎友好性(例如,所有主要搜索引擎将所有相等的内容排名更高).
ii)完全控制url的第二个优势与数字人文研究中用于数据保存的当前驱动力有关.在没有详细说明的情况下,数据保存的一个方面涉及创建"永久URL"和"唯一资源标识符"(uri).Web表单中会话变量和视图状态的标准使用意味着相同的url可以引用多个数据项(其中查询参数通过视图状态输入).结果是在该庄园数据中访问的数据没有唯一的资源标识符(即Web上的唯一地址).这意味着无法引用数据项,因为它没有Web上的唯一地址,并且无法将其包含在Linked Data计划和其他需要URI的研究计划中.
URI与系统返回计算机可读数据格式(如上所述)的简易性相结合,使得开发人员在人文数据管理和保存技术的最佳实践中处于优势地位.在最近牛津大学的人文科学研究数据库 - 下一个?研讨会非常强调用uri和计算机可读数据格式策划人文科学研究数据.这是我们可以"出售"对我们的研究客户明显有利的事情.