试很可能比实现一个使用
MVC 框架开发的应用程序的测试要复杂和艰难得多。而且,一个
传统型
ASP.NET 应用程序在测试时还需要使用一个 Web 服务器。相比之下,MVC 框架把组
件分离开来并且大量地使用接口,这使得有可能独立于框架的其他部分而较容易地单独测
试单个组件。
; V+ M' }; V6 I' d) u- x, M- e
此外,一个
MVC 应用程序的三个主要组件之间的松耦合特征还推动了平行开发。例如,一
名开发人员可以开发视图,而另一名开发人员则在开发控制器逻辑,第三名程序员则可以
专注于模型部分的业务逻辑的开发。
% A+ y) \2 { j
<!--[if !supportLists]-->二、<!--[endif]-->基于 MVC 框架 Web 应用程序的优点
归纳来看,
ASP.NET MVC 框架主要提供了下列优点:
<!--[if !supportLists]--><!--[endif]-->通过把一个应用程序分离成相互独立的模型、视
图和控制器三部分而进一步提高了应用程序复杂性的管理。
<!--[if !supportLists]-->& [4 _- b7 j2 }% L" t9 r7 y 不再使用视图状态或基于服务器的
表单技术。这使得
MVC 框架特别有利于想全面控制一个应用程序的行为的开发人员。
<!--[if !supportLists]-->使用一种前端控制器(Front Controller)模式并通过单一的
控制器来处理
Web 应用程序请求。这一特征使你有可能设计出一个支持极其丰富的路由
基础结构的应用程序。有关于前端控制器的更多的信息,请参考
http://go.microsoft.com/fwlink/?LinkId=106357。 v9 o8 Q; k# ^* G' g2 a+ N: N
<!--[if !supportLists]-->& e8 K7 z5 V# p0 \* k6 B<!--[endif]-->提供对于测试驱动开发
(TDD)的大力支持。9 G5 h B e) `2 C: d
<!--[if !supportLists]-->三、<!--[endif]-->基于 Web 表单 Web 应用程序的优点 6 ?! n/ S. ?' F) d9
G0 V8 J8 d
传统型基于
Web 表单的框架能够提供下列优点:
<!--[if !supportLists]-->8 {4 E" k9 x6 K8 ~* Q 支持事件模型。此模型能够保留 HTTP
传输过程中的状态,而这十分有利于在线业务式
Web 应用程序的开发。基于 Web 表单
的应用程序提供大量的事件,所有这些事件都得到数以百计的服务器控件的支持。
7 q9
z; m" Q: p/ f
<!--[if !supportLists]-->使用一种页面控制器(Page Controller)模式,此模式能够把
许多功能添加到单个的页面。有关于页面控制器的更多的信息,请参考
http://msdn.microsoft.com/zh-cn/library/ms978764.aspx。
<!--[if !supportLists]-->6 G; Y& A+ {) y5 x 使用视图状态或基于服务器的表单,这使
得状态信息管理更加容易。
<!--[if !supportLists]-->四、8 v" q! i4 P! E: |$ p% T0 h<!--[endif]-->ASP.NET MVC 框架特征 9
B* @ i1 b& a/ h' ~
概括来看,
ASP.NET MVC 框架大致提供了下列重要特征:
<!--[if !supportLists]-->6 j$ r7 n0 @5 K9 _, ]: S% B1 e 实现应用程序基本任务(输入
逻辑,业务逻辑和
UI 逻辑)的分离,支持测试及测试驱动开发(TDD)。MVC 框架中
所有的核心契约都是基于接口的,因此十分利于使用
mock 对象(这是一些模拟应用程
序中实际对象的模拟对象)测试工程。你可以对应用程序进行单元测试而不必在真正的
ASP.NET 进程中运行控制器,这加快了单元测试的速度和灵活性。你可以使用与.NET
框架相兼容的任何单元测试框架测试你的工程。
/ t: D- \% O% g0 A& V( _- R
<!--[if !supportLists]-->提供了一个可扩展的和可插接的框架。ASP.NET MVC 框架组
件的设计支持用户十分容易地对它们进行替换或定制。你可以设计并加入你自己的视图
引擎,
URL 路由策略,行为方法参数串行化,以及其它组件。ASP.NET MVC 框架还支
持使用现有依赖性注入(即
“Dependency Injection”,简称“DI”)和控制反转(IOC)容