一. MVC是谁提出的
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件
设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的
使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多
好处,但也有一些缺点。
二. MVC是否适合进行大项目的开发
MVC框架肯定是适合于做大项目开发的,但并不是说有了MVC框架我们就可以开发大项目,听起来
有些绕,其实道理很简单,原因就是人(开发者)。如果你是一个对MVC框架的设计理念有深入研究
的人,那么你在使用MVC框架进行产品和项目开发的时候就会随时随地都要考虑一些问题:
1.低耦合性(强调视图层和业务层分离)
2.可测试性(这个非常重要)
3.高重用性和可适用性
4.有利于软件工程化管理等等。
这里我很欣赏老赵的治学态度,因为在他的文章和代码中随时随地都在进行着思考,特别是其对
可测试性,单元测试(这里不是什么TDD)的思考,让我看起来有心灵相通的感觉。因为这些问题都
是在做中型甚至大型项目中要认真思考的,决不是说微软给的例子就是我们的唯一准则,必定里面有
对也有错,我相信在MVC面前,国内甚至微软内部的牛人都不是很多。
说了这些,大家可以意识到了,如果在没有理解下面这张图以及对MVC的“所谓优点是从何处得
到的”有认识,而一上来就去拿MVC去开发大型项目的话,我想不仅不能发挥asp.net MVC框架的估
势,相反会时时受制于里面的约束,配置和功能特性,最后感觉还不如直接用asp.net webform开发
来的直接,不是吗?真要是到了这一境地,我想不仅无法使用MVC进行大型目开发,就连中小企业应
用都应付不来。
三. 能不能使用MVC架构进行Webform的开发
在园子里有人尝试使用ASP.NET MVC 框架来进行webform方式的开发,我个人是不欣赏这种做法
的,这就好比在使用LINQ的项目中又同时使用SQL语句一样“怪异”,这在代码的整体风格上会让人
产生迷惑,不是吗?当然老赵也在他的视频课程中提到在webform页面中使用一些MVC功能(比如:
ModelBinder等),但我想老赵的本意决不是让这种混合方式的开发大行其道,必定这是“非主流”,
所以孰轻孰重还是要大家自己把握的。
四. 传统的三(N)层架构与MVC,以及MVC与MVP关系
本文所说的三层架构指:表现层(显示层), 业务逻辑层, 数据访问层(持久化)。如果大家
非要“生搬硬套”的把它与MVC扯上关系的话,那我就只能在这里"强扭这个瓜"了,即:
三层架构中"表现层"的aspx页面对应MVC中的View(继承的类不一样)
三层架构中"表现层"的aspx.cs页面(类)对应MVC中的Controller,理解这一点并不难,大家想一想
我们以前写过的Redirect,当然它本身就是跳转了一些链接页面,而MVC中的Controller要做的更爽,
它控制并显示输出了一个视图。即然所起到的作用都是对业务流程和显示信息的控制,只不过是实现
手段不同而已。
三层架构中业务逻辑层和数据访问层对应MVC中的Model(必定View和Controller已找到“婆家”,
剩下的Model只能是业务业务层和数据访问层的了,呵呵)。但其实微软的一些MVC示例项目中对这个
问题理解的并不是这样简单,这一点在我之前的关于两个MVC示例的思考(MVCStore和Oxite) 已阐述
过,就不多说了。
其实明白了这个关系,就可以尝试把以前的三层结构迁移到MVC框架下,当然在这个过程中肯定
会遇到这样或那样的问题,但原则就是把将MVC的优势发挥到极致,要不然还不如不做。