asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET MVC 4框架揭秘:什么是MVC模式


发布日期:2019年01月11日
 
ASP.NET MVC 4框架揭秘:什么是MVC模式

什么是MVC模式

MVC的创建者是Trygve M H Reenskau他是挪威的计算机专家同时也是奥斯陆大学的名誉教授MVC是他在年访问施乐帕克研究中心(Xerox Palo Alto Research CenterXerox PARC)期间提出一种主要针对GUI应用的软件架构模式MVC最初用于SmallTalkTrygve最初对MVC的描述记录在Applications Programming in Smalltalk(TM)How to use ModelViewController (MVC)这篇论文中有兴趣的读者可以通过地址http://stwwwcsillinoisedu/ users/smarch/stdocs/mvchtml阅读这篇论文

MVC体现了关注点分离这一基本的设计方针它将构成一个人机交互应用涉及的功能分为ModelController和View三部分它们各自具有相应的职责

Model是对应用状态和业务功能的封装我们可以将它理解为同时包含数据和行为的领域模型(Domain Model)Model接受Controller的请求并完成相应的业务处理在状态改变的时候向View发出相应的通知

View实现可视化界面的呈现并捕捉最终用户的交互操作(比如鼠标和键盘操作)

View捕获到用户交互操作后会直接转发给Controller后者完成相应的UI逻辑如果需要涉及业务功能的调用Controller会直接调用Model在完成UI处理之后Controller会根据需要控制原View或者创建新的View对用户交互操作予以响应

揭示了MVC模式下ModelView和Controller之间的交互对于传统的MVC模式很多人认为Controller仅仅是View和Model之间的中介实则不然View和Model存在直接的联系View可以直接调用Model查询其状态信息当Model状态发生改变的时候它也可以直接通知View比如在一个提供股票实时价位的应用中维护股价信息的Model在股价变化的情况下可以直接通知相关的View改变其显示信息

ModelViewController之间的交互

从消息交换模式的角度来讲Model针对View的状态通知和View针对Controller的用户交互通知都是单向的我们推荐采用事件机制来实现这两种类型的通知从设计模式的角度来讲就是采用观察者(Observer)模式通过注册/订阅的方式来实现它们即View作为Model的观察者通过注册相应的事件来检测状态的改变而Controller作为View的观察者通过注册相应的事件来处理用户的交互操作

我看到很多人将MVC和所谓的三层架构进行比较其实两者并没有什么可比性MVC更不是分别对应着UI业务逻辑和数据存取三个层次不过两者也不能说完全没有关系Trygve M H Reenskau当时提出MVC的时候是将其作为构建整个GUI应用的架构模式这种情况下的Model实际上维护着整个应用的状态并实现了所有的业务逻辑所以它更多地体现为一个领域模型而对于多层架构来说(比如我们经常提及的三层架构)MVC是被当成UI呈现层(Presentation Layer)的设计模式而Model则更多地体现为访问业务层的入口(Gateway)如果采用面向服务的设计业务功能被定义成相应服务并通过接口(契约)的形式暴露出来这里的Model还可以表示成进行服务调用的代理

返回目录ASPNET MVC 框架揭秘

编辑推荐

Java程序性能优化让你的Java程序更快更稳定

Visual C++音频/视频技术开发与实战

上一篇:ASP.NET MVC 4框架揭秘:自治视图

下一篇:ASP.NET MVC 4框架揭秘:MVC的变体