8. 什么是ASP.NET MVC? ASP.NET MVC是微软发布的,用于设计低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件,所以你可能认为又回到了麻烦的原生web应用程序开发。但不是,让我们来讨论下ASP.NET MVC框架的优缺点:
优点: 1) 项目架构 ASP.NET MVC架构降低了程序间的耦合性,即M(model)、V(View)、C(Controller)。如图: 2) 测试驱动开发和重用性 a) MVC的Controller,是一个独立的类,所以支持测试驱动开发。 b) MVC的Controller,不绑定任何特定的View,所以能重用于多个View。 3) 性能 ASP.NET MVC框架不支持ViewState,所以不会有自动状态管理机制,从而降低了页面传递的尺寸,提高了程序性能。 4) 完全的HTML控制 ASP.NET MVC 不支持服务器控件,唯一的选择是使用客户端输入控件,这样我们能完全控制最后展现的html。所以ASP.NET MVC 架构能很容易的与第三方JavaScript库(eg:Jquery)集成开发。 5) 支持并行开发 ASP.NET MVC架构中的各层是松散耦合的,所以一个开发者在开发Controller的同时第二个开发者开发View并且第三个开发者开发Model。这就是所谓的并行开发。 6) SEO,URL重写和REST 丰富的路由规则让每个URL被视为一个资源,即支持RESTful。 同时,用户用好的、可读的URL能改善SEO。 7) 可扩展的 ASP.NET MVC支持多种视图引擎,eg:aspx、razor,如果需要还能开发自己的视图引擎。 8) 继承ASP.NET特性 ASP.NET MVC框架构建在成熟的ASP.NET框架之上,所以提供开发者很多好功能,如表单验证、windows身份验证、缓存、会话等等。 缺点: 1) 提高了学习成本 没有事件驱动编程模型和视图状态,使得对于缺少web应用开发经验的开发者来说很难上手。
9. ASP.NET MVC 是如何工作的? 1) 用户通过浏览器URL向服务器请求一些资源。(GET请求) 2) 路由引擎首先将这个请求传递给对应的Controller。 3) 如果需要持久化数据,Controller就从Model中获得数据。 4) Model访问数据库数据(或其它一些数据资源)并返回数据给Controller。 5) Controller将选择适当的View。 6) Controller将数据(第四部获取的model)传递给页面(第五部获取的view),数据将填充到页面的指定位置。 7) Controller将View返回并呈现给用户。
这是一个GET请求,POST请求的流程类似。唯一不同的是:不是通过在浏览器中输入url触发,而是在页面上做一些操作(eg:点击按钮、改变下拉选项等等)来触发POST请求。
10. 什么是ASP.NET Web Forms框架以及什么是ASP.NET MVC框架? 哪一个才是“最佳选择”?特定的解决方案依赖于应用程序的需求和团队成员的技术背景。当你面临必须在 ASP.NET Web Forms框架和 ASP.NET MVC框架中选择一个的时候,你要明白最重要的权重不是技术,而是其他的。当你做选择时,你需要考虑的两个重要因素: 1) 快速应用程序开发 如果你想快速开发任何web程序,那么ASP.NET Web Forms框架是你唯一的选择,你甚至无需考虑如何让 ASP.NET MVC框架快速开发程序。(选择ASP.NET Web Forms框架的原因:需求为快速开发的程序,客户一般不会支付太多money;或者应用程序只使用一、俩个月并且不再需要继续维护的项目) 2) 单元测试 如果自动单元测试对你来说非常重要,那么最好选择ASP.NET MVC框架。
除了这些,你能做的是:写下你的项目需求并试图比较ASP.NET Web Forms框架和 ASP.NET MVC框架的优劣。如果可能,就尝试问自己下面这些问题: 1) 你的团队是否在Web Forms框架或Windows Forms框架上拥有丰富的开发经验? 如果是,那么学习ASP.NET MVC框架对于团队来说可能是一项乏味的任务。因为开发者已经习惯使用ViewState和事件驱动的编程模型,思维的改变将是一个困难的任务。------ Web Forms框架获得一票。 2) 你的团队是否在ASP.NET MVC框架上拥有丰富的开发经验? 如果是,请选择MVC框架。------ ASP.NET MVC 框架获得一票。 3) 你的团队是否在ASP或非微软技术(如android、ios、jsp、ror、php等)上拥有丰富的开发经验? 如果你曾使用过JSP或ASP,你可能熟悉HTTP的get和post请求,甚至你可能手写过使用MVC模式的代码,因为这些技术当中大部分都默认使用MVC模式。------ ASP.NET MVC 框架获得一票。 4) 是否会大量使用JavaScript? 如果是,选择MVC框架更合适,因为它能完全控制页面的HTML。------ ASP.NET MVC 框架获得一票。 5) 寻找更好的性能 不支持ViewState机制的 ASP.NET MVC 框架比ASP.NET Web Forms 框架能提供更好的性能。ASP.NET MVC 框架获得一票。 6) 计划重用相同的输入逻辑 如果是,请选择MVC框架。------ ASP.NET MVC 框架获得一票。
结论 我认为你应该准备充分的信息来决定什么最适合你的项目。最后的决定取决于你的团队和你的项目需求。 希望你喜欢这篇文章,谢谢你的耐心阅读。
哈哈哈,翻译到此结束,好文还请多帮推荐…推荐。
原文作者:Marla Sukesh 原文链接:http://www.codeproject.com/Articles/528117/WebForms-vs-MVC |