- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从三层架构到MVC作者: daizhj, 代震军原文链接:/daizhj/archive/2009/04/30/1447035.html
Tags: 三层架构,mvc,mvp,健壮性分析,robustness网址:?/??
本来是不想跳出来充大头蒜的,但最近发现园子里关于MVC的文章和讨论之风越刮越烈,其中有些朋友的观点并不是我所欣赏和推荐的,同时最近也在忙着给公司里的同事做MVC方面的“扫盲工作”。所以就搜集了一些大家接触MVC的过程中经常出现的问题做了一下解释说明,希望能与大家多多交流,呵呵。
???? 当然这种架构模式本身的一些问题也会在接下来的内容就加以介绍,另外就是如果大家有什么不同观点的话,欢迎拍砖(只要不打脸就行,呵呵)。
????一.? MVC是谁提出的???????? 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
????二.? MVC是否适合进行大项目的开发??? MVC框架肯定是适合于做大项目开发的,但并不是说有了MVC框架我们就可以开发大项目,听起来有些绕,其实道理很简单,原因就是人(开发者)。如果你是一个对MVC框架的设计理念有深入研究的人,那么你在使用MVC框架进行产品和项目开发的时候就会随时随地都要考虑一些问题:
??? 1.低耦合性(强调视图层和业务层分离)2.可测试性(这个非常重要)??? 3.高重用性和可适用性4.有利于软件工程化管理等等。
??? 这里我很欣赏老赵的治学态度,因为在他的文章和代码中随时随地都在进行着思考,特别是其对可测试性,单元测试(这里不是什么TDD)的思考,让我看起来有心灵相通的感觉。因为这些问题都是在做中型甚至大型项目中要认真思考的,决不是说微软给的例子就是我们的唯一准则,必定里面有对也有错,我相信在MVC面前,国内甚至微软内部的牛人都不是很多。
??? 说了这些,大家可以意识到了,如果在没有理解下面这张图以及对MVC的“所谓优点是从何处得到的”有认识,而一上来就去拿MVC去开发大型项目的话,我想不仅不能发挥 MVC框架的势,相反会时时受制于里面的约束,配置和功能特性,最后感觉还不如直接用 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的优势发挥到极致,要不然还不如不做。
???? 说到这里,其实早在N年前就有人提出使用FrontControlle
文档评论(0)