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

简介:

博学,切问,近思--詹子知 (https://jameszhan.github.io)

  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架构探究及其源码实现(2)-核心组件定义
  2. MVC架构探究及其源码实现(3)-WebApplicationContext
  3. MVC架构探究及其源码实现(4)-前端控制器
  4. MVC架构探究及其源码实现(5)-相关组件实现
  5. MVC架构探究及其源码实现(6)-简单示例

目录
相关文章
|
1月前
|
数据库 Android开发 开发者
构建高性能微服务架构:从理论到实践构建高效Android应用:探究Kotlin协程的优势
【2月更文挑战第16天】 在当今快速迭代和竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性和独立部署能力而受到企业的青睐。本文将深入探讨如何构建一个高性能的微服务系统,涵盖从理论基础到具体实现的各个方面。我们将重点讨论服务拆分策略、通信机制、数据一致性以及性能优化等关键主题,为读者提供一个清晰、实用的指南,以便在复杂多变的业务环境中构建和维护健壮的微服务体系结构。 【2月更文挑战第16天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着技术的不断进步,Kotlin作为一种现代编程语言,在Android开发中被广泛采用,尤其是其协程特性为异步编程带来了革命性的改进。本文旨在深入
239 5
|
2月前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
304 6
|
2月前
|
人工智能 监控 安全
java基于微服务架构的智慧工地监管平台源码带APP
劳务管理: 工种管理、分包商管理、信息采集、班组管理、花名册、零工采集、 现场统计、考勤管理、考勤明细、工资管理、零工签证
286 4
|
3月前
|
设计模式 前端开发 数据库
从MVC到MVVC:软件架构的演变和迭代(二)
从MVC到MVVC:软件架构的演变和迭代
|
1月前
|
存储 前端开发 BI
基于云计算技术的B/S架构智能云HIS系统源码 集挂号、处方、收费、取药、病历于一体
云HIS是针对中小医院机构、乡镇卫生室推出的一套基于云端的云HIS服务平台,借助云HIS,将医院业务流程化,大大提高医院的服务效率和服务质量,为客户提供医院一体化的信息解决方案。云HIS主要功能:包含门诊收费管理,住院收费管理,门诊医生工作站,住院医生工作站,住院护士工作站,辅助检查科室管理,药房药品管理,药库药品管理,报表查询。满足诊所、中小医院业务中看诊、收费、发药、药库管理、经营分析等多环节的工作需要。
41 4
|
2月前
|
前端开发 Java fastjson
且谈软件架构(二) 模块化与MVC
且谈软件架构(二) 模块化与MVC
|
24天前
|
设计模式 开发框架 编译器
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(二)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
34 0
|
1月前
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
9 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
2月前
|
监控 安全 物联网
B/S架构智慧工地源码,两个终端:PC后台管理端、APP移动端
智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等十大管理环节变得智慧可控。为建设集团、施工企业、政府监管部门等提供一站式工地现场管理信息化解决方案,是一种崭新的工程现场一体化管理模式。
29 0