同时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的方式大同小异,因此不仔细说了。