《精通 ASP.NET MVC 4》----1.4 谁该使用ASP.NET MVC

简介: 如同任何新技术一样,ASP.NET MVC存在的事实并不是就要使用它的充分理由。这里,本书将给出MVC框架与大多数流行的替代品比较所得到的观点。作为一本关于MVC框架的书,本书尽可能做到没有偏见,但这受限于客观情况。

本节书摘来自异步社区《精通 ASP.NET MVC 4》一书中的第1章,第1.4节,作者: 【美】Adam Freeman ,译者: 李萍 , 徐燕萍 , 林逸 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 谁该使用ASP.NET MVC

精通 ASP.NET MVC 4
如同任何新技术一样,ASP.NET MVC存在的事实并不是就要使用它的充分理由。这里,本书将给出MVC框架与大多数流行的替代品比较所得到的观点。作为一本关于MVC框架的书,本书尽可能做到没有偏见,但这受限于客观情况。以下小节是基于技术的比较。当选择一个Web应用程序框架时,读者也应当考虑:在技术层面上,团队的技能、移植现有项目所涉及的工作、关系以及信心等方面的因素。

1.4.1 与ASP.NET Web Form的比较

前面已经详述了传统ASP.NET Web Form的弱点与局限性,以及ASP.NET MVC是如何克服这些问题的。然而这并不意味着Web Form的消亡,微软反复声明,对这两种技术都会积极地加以发展和支持,而且也没有要引退Web Form的计划。在某些方面,对两者的选择是一种开发理念方面的事情。请考虑以下要点。

Web Form的观念是UI应当是状态化的,其结果是,在HTTP和HTML之上添加一个复杂的抽象层,用视图状态和回发(Postback)来创建状态化的效果。这使得它适合于“拖—放”式Windows Form风格的开发。其间,开发者把UI部件拖放到一个画布上,并在其中填写其事件处理器代码。

MVC采纳了HTTP真正的无状态本质,遵循而不是违背它。MVC框架要求用户理解Web应用程序实际的工作方式。在理解的前提下,以易于随时扩展和维护的整洁代码,提供一种简单的、功能强大的、现代的方法来编写Web应用程序,并摆脱离奇的复杂性和令人痛苦的限制。

肯定有一些情况,Web Form会与MVC一样,甚至可能更好。明显的例子是开发小型的、企业内部型应用程序,其大量的工作是把网格直接绑定于数据库表,或通过向导对用户进行引导。当不必担忧带宽消耗或搜索引擎优化时,Web Form的“拖—放”式开发的长处可能胜过它的弱点。

反过来说,如果正在编写的是用于Internet的应用程序或大型Intranet应用程序,那么MVC所提供的带宽效率、更好的浏览器兼容性,以及更好的自动化测试支持等,是很有吸引力的。

1.4.2 从Web Form迁移到MVC

如果读者正在考虑将一个现有的ASP.NET Web Form项目迁移到MVC,就会开心地发现,这两种技术可以并存于同一个应用程序之中。这为逐步迁移现有应用程序提供了机会,特别是利用域模型或事务逻辑单独地对Web Form的页面进行约束,而把应用程序分成若干层次的情况尤其如此。在有些情况下,甚至可以故意把一个应用程序设计成两种技术的混用。

1.4.3 与Ruby on Rails的比较

Rails已经成为与其他Web平台进行比较的一个基准。微软.NET领域的开发者和公司会发现ASP.NET MVC易于使用和学习,而工作于Linux或Mac OS X上的Python或Ruby开发者和公司会发现Rails更容易些。从Rails迁移到ASP.NET MVC是不可能的,反之亦然。两种技术之间有一些本质上的差别。

Rails是一种整体开发平台,即它处理整个技术堆栈,从通过ORM进行数据库源控制,到用控制器和动作处理请求——所有这一切都可以用内建的自动化测试工具来完成。

ASP.NET MVC框架专注于MVC模式,以控制器和动作来处理Web请求。它不具有内建的ORM工具、自动化测试工具或管理数据库迁移的系统,这是因为.NET平台为这些功能已经提供了广泛的选择,用户可以使用其中任意一种。例如,如果正在寻找ORM工具,可以采用NHibernate、Subsonic、微软的Entity Framework,或其他任意一种成熟可用的解决方案。这就是宽松的.NET平台,尽管这意味着它不像Rails那样,把这些组件都集成到ASP.NET MVC之中。

1.4.4 与MonoRail的比较

MonoRail是一个早期的基于.NET MVC的Web应用程序平台,它是自2003年以来作为开源项目Castle的一部分来创建和开发的。在许多方面,MonoRail就像是ASP.NET MVC的原型。MonoRail演示了如何在ASP.NET上建立一个类似于Rails的MVC体系结构,并完全使用微软的实现来建立要运用的模式、实践和术语等。

人们未把MonoRail视为一个严格的竞争者。它可能是雷德蒙德(Redmond,微软总部——译者注)之外创建的最流行的.NET Web应用程序平台,而且当时确实得到了相当广泛的采纳。但自从ASP.NET MVC发布之后,已经很少听到MonoRail项目的消息了。.NET Web开发领域的狂热和创新势头现在主要集中在ASP.NET MVC上。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
18天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
22 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0
|
2月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
2月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
85 0
|
2月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
115 5
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
47 0
|
9月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
124 0
|
10月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0
|
10月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
120 0
|
10月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
146 0