`

MVC架构探究及其源码实现(1)-理论基础

 
阅读更多

MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

  模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已经被广泛使用。

  我们先来看下经典桌面MVC的模型,为了实现显示和数据的分离,我们在视图和模型之间加入一个控制层,视图只能通过控制器来操作模型,也就是数据层,一旦数据有更新,模型就会通知视图更新自己。在桌面程序中,用户可以直接和视图进行交互,通过对事件的操作,可以触发视图的各种事件,通过控制器,以达到更新模型或数据的目的。

经典MVC

  由于Web应用的复杂程度的日益增加,功能也日益庞大,表示层与数据层的分离也显得日益重要。于是MVC这种架构模式被移植到WEB开发中来也是很自然的事情,然而,Web程序和Desktop程序是有很大区别的,大家都知道,HTTP协议是无连接的,当用户从服务器拿到一个页面之后,整个交互过程也就完成了,用户无法知道服务器端状态的更新,除非用户再次发送请求。而且,在Web程序中,是没有事件模型支持的,用户的每个动作都必须转化为对服务器请求。以往的经验,我们经常把视图和控制器组合起来,一个页面既包含程序的业务逻辑,又包含页面的显示信息。然而,视图是经常变化的,业务逻辑确实相对比较稳定的。为了解决这个问题,比较流行的做法是让控制器执行业务逻辑,从数据层(模型)中抓取显示相关的数据,而视图仅仅是一段显示代码,没有业务逻辑。由于请求多种多样,而且在控制器到视图的数据转发部分含有很多相同的逻辑,而且为了方便扩展和管理,于是就有人提出了前端控制器的概念,也就是请求分发器。分发器的作用主要工作就是将一个request分发到一个合适的处理器上,并将处理返回的包含特定信息的视图返回给客户端。下图展现了现在常用的Web MVC 的标准模型。

WEB MVC

然而,这不是唯一的模型,在ASP.net中,有一种叫做页面控制器的模型。在这种MVC中,并不是令分发器去寻找一个控制器并执行之,而是直接到达视图并且在继续生成视图之前调用相应的控制器。与传统的MVC模式中的前端控制器对应,这种模式称为页面控制器。页面控制器和前端控制器实现实现之间的区别在于页面控制器描述的往往是同一个页面中(如类似于控制面板那样的页面)的处理逻辑,不能用于跨多个页面对处理过程进行控制或协调。它是一种Poll的模型。

Poll

对应的,前端控制器是很典型的一种Push的模型,对同一个请求的几个不同的动作,根据业务逻辑处理后的结果分别被压入到response的各个不同部分。

Push

在下文中,我们仅讨论前端控制器这种方式的具体实现。

 

相关文章:

  1. MVC架构探究及其源码实现(1)-理论基础
  2. MVC架构探究及其源码实现(2)-核心组件定义
  3. MVC架构探究及其源码实现(3)-WebApplicationContext
  4. MVC架构探究及其源码实现(4)-前端控制器
  5. MVC架构探究及其源码实现(5)-相关组件实现

原文链接:http://blog.csdn.net/zhiqiangzhan/article/details/4697443

63
41
分享到:
评论
1 楼 coffeescript 2013-07-17  
顶1024次。

相关推荐

    tom-spring源码文档,阿里java面经.rar

    - **事务管理**:探究PlatformTransactionManager接口及其实现,了解如何进行事务控制。 4. **阿里Java面经**: - **基础知识**:包括JVM内存模型、垃圾回收机制、多线程、数据结构与算法等。 - **并发编程**:...

    深入JavaWeb开发内幕核心基础书中源码

    "深入JavaWeb开发内幕核心基础书中源码"提供了丰富的实践案例,帮助开发者从源代码层面深入探究JavaWeb的运行机制。这本书的源码涵盖了诸如Servlet、JSP、JavaBean、过滤器、监听器、MVC框架、数据库连接池、会话...

    Java web项目源码 明日知道.zip

    1. **MVC架构**:Java Web项目通常遵循Model-View-Controller(MVC)设计模式,这是一种将业务逻辑、数据和用户界面分离的方式,有助于提高代码的可维护性和可扩展性。源码中可能包含Controller层的处理请求和转发...

    Python项目开发实战练习含源码和文档.zip

    - 使用Flask或Django框架进行Web应用开发,理解MVC架构。 - 学习路由、模板渲染、表单处理以及数据库交互。 - 探索API开发,了解RESTful API设计原则。 5. **网络编程** - 学习使用requests库进行HTTP请求,...

    JumbotCms v7.3.1 源码版.zip

    **JumbotCms v7.3.1 源码版详解** JumbotCms是一款基于Web的开源内容管理系统,版本号v7.3.1代表着它经过了多次迭代与优化,提供了更为稳定...通过深入探究源码,不仅可以提升编程技能,还能对Web开发有更深入的理解。

    .net 企业门户网站源码

    1. 学习.NET基础,包括C#语法和.NET框架基本概念。 2. 熟悉ASP.NET MVC框架,理解MVC模式的工作原理。 3. 探究Razor视图引擎,掌握如何编写动态网页。 4. 学习ADO.NET或Entity Framework,了解数据库操作。 5. 阅读...

    j2ee 学习基础 学习课件源码 PPT

    本资料包“j2ee 学习基础 学习课件源码 PPT”是针对Java初学者精心整理的学习资源,包含了丰富的学习材料,旨在帮助初入Java世界的朋友快速掌握J2EE的基础知识。 首先,我们来详细了解一下J2EE。J2EE是一个由Sun ...

    Java Web开发实战经典,李兴华版PPT和源码

    9. **源码分析**:通过阅读和理解李兴华版的源码,学习者可以深入探究实际项目的实现细节,了解设计模式和最佳实践。 10. **测试与调试**:单元测试、集成测试和性能测试都是保证软件质量的重要环节。JUnit和...

    php开发的speedphp框架源码

    2. **MVC模式**:Model-View-Controller(模型-视图-控制器)是SpeedPHP的基础架构,将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性。 3. **数据库抽象层**:提供统一的数据库操作接口,支持多种数据库...

    校园预约打印网(django)源码&python毕业设计.zip

    Django是一个强大的、免费的开源Web开发框架,它遵循模型-视图-控制器(MVC)架构模式,能够帮助开发者快速构建功能完善的Web应用。 【描述】提到这个项目是“完整的源码”,这意味着包含了所有必要的代码文件,...

    Spring4资料

    - **AOP实现机制**:探究Spring AOP是如何实现的。 - **MVC框架内部工作原理**:了解Spring MVC处理请求的具体流程。 #### 学习资料 - **官方文档**:Spring官方文档是最权威的学习资料,包含详细的API文档和技术...

    驴友社交系统.zip

    论文部分是该项目的理论基础,它会详细介绍系统的架构设计、功能模块的划分和用户体验的优化。这对于理解项目整体思路和设计原则至关重要。论文中的架构设计可能会涉及MVC或MVVM等软件架构模式,功能模块划分则能...

    java手机游戏(堡垒)的设计与开发(源代码+论文).zip

    1. **Java语言基础**:Java是开发跨平台移动应用的首选语言之一,因其简洁、面向对象的特性,适合构建复杂的游戏逻辑。了解Java的基本语法、类库和异常处理机制是进行游戏开发的基础。 2. **Android SDK**:Java...

    计算机毕业设计电脑商城开题报告.doc

    参考文献列出了多本关于Web开发、Java网络编程、MVC模式和Struts、Hibernate等相关技术的书籍,为设计提供了理论基础和实践指导。 总的来说,这份毕业设计涵盖了从需求分析、系统设计、技术选型到实际开发和文档...

Global site tag (gtag.js) - Google Analytics