技术高手讲评ASP.NET MVC 1.0

开发 后端
为什么要用ASP.NET MVC 1.0?当刚知道1.0发布的时候,作者经常这样问。本文会从作者的角度给出一些提示。

最近正在考虑是否在我们的企业级应用中使用ASP.NET MVC 1.0框架,因此会一直找使用它的理由,希望大家在关注技术的同时,结合企业应用谈谈自己的看法。

1、MVC的组成

Models:访问数据库,装载数据、处理业务逻辑。在项目中体现为数据实体类加业务代理类。

Views:显示数据,用户界面。在项目中体现为aspx页面,偶尔可以加上code-behind。

Controller:按路由规则将请求的数据传送给指定页面,用于显示;也可以把用户输入的数据传递给逻辑处理类。它可以包含简单的验证逻辑。不应包含数据访问逻辑。

2、为何使用MVC

提出MVC的目的无非是提高开发效率、提高可测试性。官方的ASP.NET MVC 1.0指南中指出(以下简称指南),基于MVC的Web应用程序有如下优点:

[1]对复杂的程序管理更方便

It makes it easier to manage complexity by dividing an application into the model, the view, and the ontroller.

[2]在开发上有更高的可控性

It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.

[3]Routing使软件设计有更多灵活性

It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure.

[4]更加适合测试驱动开发

It provides better support for test-driven development (TDD).

[5]团队开发项目中有更高的可控性

It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.

同时MVC框架还有以下特点:

[1]将应用程序分成各个组成部份,更有利于测试。MVC框架是基于接口的,这样可以利用MOCK方式来替换你的实际类;做单元测试的时候,也可以不运行Contrllers,这样的测试就更快更灵活。

[2]MVC框架是可扩展的,你可以自己设计并替换视频引擎、URL导向规则、Action的参数序列等等。同时MVC框架也支持依赖注入和控制反转,你可以从外部注入实例,而不用让类自己创建实例,你还可以通过配置文件的方式创建实例,这样使得测试更方便。

[3]强大的URL映射组件使得你的应用程序的URL更易理解,同时具备搜索能力。你的URL不必包括文件路径,这样的设计很适合自定义查询引擎和REST架构。

[4]MVC框架仍然支持ASP.NET中的页面、用户控件、母版页作为视图的模板;同时你也还可以使用嵌套母版页、行内表达式(in-line expressions<%= %>)、服务器端控件、模板、数据绑定、本地化等等属于ASP.NET已有的东西。

[5]同时ASP.NET中的FORM验证、Windows验证、URL授权、Membership、角色、输出、数据缓存、Session、Profile 状态管理、配置、Provider框架等特性在MVC框架中仍然是可用的。

小结:ASP.NET MVC 1.0框架是基于ASP.NET的,所以他包括了ASP.NET中的几乎所有特性。同时他为设计人员提供了一套测试的方案(当然这是所有语言平台MVC模式的共性)。在安装了框架的VS2008中还增加了不少功能,可以方便地添加Views、Models、Controllers。

3、与三层结构的ASP.NET应用程序比较

与普通ASP.NET比较而言,***的区别还是在于前台开发,后台包括的数据库访问、逻辑处理与以往的方式没有明显区别,在MVC框架中,这些统称为Model。而三层结构中,这些可以称为数据访问层与逻辑处理层。

[1]页面开发

用这种模式开发的站点,光看页面的代码的确比以往少一些,但它更多地使用了页面脚本(<% ... %>)用于显示数据。在指南中并未提到不推荐使用服务器端控件,但是它提供了大量的HTML HELPER,而且还允许你自己添加Helper,比如DataGridHelper,所以在MVC框架中使用这些Helper会更方便些,不过这对于熟练工来说应该影响不大,因为实际开发中我们更多使用的是Ctrl+C/Ctrl+V,复制几个标签和复制几个Helper方法所花的时间差不多。可能对于新手来说,如果对标签不熟悉的话,用这些Helper的速度会快些,但是这样会影响新手掌握标签,真是矛盾呐。

[2]数据提交

普通的ASP.Net开发,在提交数据的时候可能还需要通过设置数据绑定,或者在code-behind里写封装代码;而在MVC中,框架自动帮助你将页面上填写的数据封装到事先指定的Model中,数据提交操作在MVC框架挺方便。而且在普通ASP.NET页面中,经常会出现某个属性无法绑回去的情况,这点在MVC中应该可以得到解决。指南中提到了Routing的使用使得MVC框架下的应用程序在操作自定义查询时变得更方便,实际上在查询方面跟普通方式并没有多大区别,都是对封装好的类进行解析。至于“URL更容易理解”,现在应用程序都是从界面上点击来实现操作,很少有人会关注URL本身吧,所以这个优点不算优点。

[3]单元测试

从测试上讲,MVC框架确实做得不错,若用MOCK方式测试可以更方便,一个好的WEB应用程序设计就应该将页面呈现与逻辑分开,这点普通ASP.NET应用程序也是可以做到的,关键在于设计。

[4]其它

MVC框架在验证、母版页这些地方有几个新特性,但与普通ASP.NET的方式大同小异,因此不仔细说了。

【编辑推荐】

  1. 微软发布ASP.NET MVC框架1.0正式版(附下载地址)
  2. ASP.NET MVC历史上十个版本回顾
责任编辑:彭凡 来源: 博客园
相关推荐

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2010-06-23 15:44:03

ASP.NET MVC

2009-04-01 11:05:10

微软MVCASP.NET

2009-07-24 11:33:12

MVC单元测试ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2010-03-19 09:17:16

ASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-22 10:13:31

异步ActionASP.NET MVC

2009-07-29 09:17:12

jQuery删除

2009-07-20 15:44:32

ASP.NET MVC

2009-07-23 11:33:18

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-04-01 12:00:43

ASP.NETMVC

2011-09-22 10:58:56

ASP.NET
点赞
收藏

51CTO技术栈公众号