文章编号:1007-757X(2021)03-0004-03
基于MVC的Web框架设计与应用
亓雪冬,韩立峰
(中国石油大学(华东)信息化建设处,山东青岛266580)
摘要:MVC是一种重要的软件设计模式,研究了MVC设计模式的体系架构,介绍了模式-视图-控制器三部分的功能以及相互关系,提出了基于MVC的Web框架设计思路,设计开发了高效率、可扩展的轻量级Web框架。包括Web请求数据封装、控制器调度、对象-关系映射等Web应用所需的通用核心功能,并基于该Web框架设计实现了程序设计实训Web系统。实践表明,MVC Web框架为Web应用开发提供了关键技术支撑,简化了开发工作,提高了开发效率,增强了应用系统的稳定性和可靠性。
关键词:MVC;Web框架;Web应用开发;PHP
中图分类号:TP393文献标志码:A
Design and Application of MVC-based Web Framework
QI Xuedong,HAN Lifeng
(Information Construction Department,China University of Petroleum(East China),Qingdao266580,China) Abstract:MVC is an important software design pattern.This paper studies the architecture of the MVC design pattern,intro­duces the functions and interrelationships of the three parts of the mode-view-con t roller,proposes the design idea of Web framework based on MVC.A high-efficiency,scalable and lightweight Web framework is designed and developed,it includes somecommoncorefunct9onsrequ9redby Webapplcat9onssuchas Webrequestdataencapsulat9on!contro l erschedulng!and object-relational mapping.And a real Web application(programming practicing Web system)is realized based on the MVC Web framework.Practice shows that the MVC Web framework provides key technical support for Web application develop­ment,simplifies development work,improves development efficiency,and enhances the stability and reliability of application systems.
Key words:MVC;Web framework;Web application development;PHP
0引言1MVC设计模式
随着Web业务需求的不断增长,MVC设计模式和基于MVC的Web框架被持续研究和关注,如冉启武等⑴设计了基于MVC模式的教学管理电子信息系统;张翠翠等⑵研究了基于MVC的试卷生成及主观题判卷
算法;王俊芳等⑶研究和应用了基于MVC模式的ThinkPHP框架;Majida Laaziri等⑷评估了Laravel*Smfony和Codelgniter三种PHP Web框架并对其性能进行了测试;Andri Sunardi等
对比了Laravel和Slim两种PHP Web框架并研究了在自由职业者项目监控系统中的应用效果。众多研究表明,MVC 模式通过对应用的分层和解耦,减少了架构设计的复杂性,增加了代码的灵活性和可重用性;而MVC Web框架通过提供基础框架模型和类库,减少了Web应用开发中的重复代码,提高了开发效率和可维护性&
本文在研究MVC设计模式的基础上,分析了Web应用的一般性需求,提出了MVC Web框架的设计思路,并基于该框架设计实现了程序设计实训Web系统&
MVC设计模式最初于上世纪80年代诞生于Smalltalk 语言中,近年来被广泛应用于Java EE、Web等平台的软件开发中&MVC全称为Model-View-Controller,Model指数据模型,View指视图(用户界面),而Controller则指控制器& MVC的目的是将Model和View分离,从而使同一个程序可以使用不同的表现形式。MVC强制使应用程序的输入、处理和输出分开设计,将程序主体分离为模型、视图、控制器3个核心部件,实现功能的解耦&模型-视图-控制器三者间的关系,如图1所示&
图1MVC架构示意图
基金项目:教育部2019产学合作协同育人项目(201901222019)
作者简介:亓雪冬(1978-),男,博士,工程师,研究方向:计算机应用技术、计算机辅助教育&韩立峰(1977-),男,硕士,高级工程师,研究方向:计算机应用技术、网络安全&
4
控制器接
的输入并调用模型和 去完JS 的需求,它本身
何处理!
何数据&单击
Web 页面中的超链接和发送HTML 表单时, 接收请
决定调用哪个模型去处理请求,然后 定用哪 1图
来 返回的数据! 模型和 的粘合 &
模型 数据和业务 ,它返回的数据是中立的,与 数据 无关,因
模型 为 数据,减
码的重 &
种展示和操作数据的方式。不同的
& 的处理操作发生在模
型部分 部分&在Web
程序,通常由
HTML  、模板标
及模型返回的数据共
&
2基于MVC 的Web 框架设计
2. 1 整体架构
本 计的Web 框架
MVC 设计模式,核心类包括
控制器基类Controller.模式基类Model 、用于生
的模
类Template 和工具类Request 。整体架构,如图2所示&
-template
I
-init()-dispatch()
-coolies  -session -smarty -assing()-display()
图2整体架构设计图
控制器基类Controller 逻辑上依赖于类Model 和类 Template,内部包含了 Model 和Template 的实例,其目的是
粘合这两个类的功能,选择合适的Model 获取数据,并选择 合适的模板生成视图。模式基类Model 包含了操纵数据的 基本业务
,如查、保存、更新和删除数据等方法&模板
类Template 内部 方的模板引擎Smarty,实现内数据到HTML  的转换&工具类Request  [了
Web 请求数据的
、请求的派发等
,将Web 请求转发到指定的控制器&
该架构将Controller 与Model 的业务逻辑层作为应用的 主要开发区域,上层应用程序只需
Controller 和Model ,
根据业务 需求实现对应子类UserControl 和UserMod-
el , 业务 开发。
2. 2 Web 请求入口设计
index, php 为Web 请求的入口地址& Web 请求到达后, index, php
Web 请求中
的各种数据进行圭寸装以后续
;接下来将Web 请
发到指定控制器,由控制
对请求的后续处理&
Requset ::mit ()方 Web 请求数据封装,将
PHP 中全局变量S_POST (Post 请求数据)、S_GET (Get 请求
数据)、s_COOKIE  ( Cookie 数据)、S_FILES  (上传的文件)等
保存至类Request 对应的静态 中。
Requset : : dispatch  ()方法实现了控制器调度,其思
为"
(1) 从Web 请求的Get 数据中提取ct 和ac 两个参数的值, 数 行处理的控制器Controller 以及控制
的 体 作 Action
(2) 将预设的控制器文件目录、上一步操作中 的控
及 php ”三部分合成控制器类文件完整
, require  该控制 类;
该控制器的
并调用实例中参数ac 所指的
Action  方 , 控制 调 。2.
' 控制器设计控制
层次? Controller 基类和UserCon-tro l er  子类。 基类中
Model  和 Template  的 ,方
合模式和
&但基类中并未
何Action 方法,这部分
子类根据业务 体 。
2.4 视图模板设计
控制 业务 后, 调 模 类 Template , 返
回的数据和指定的模板合
,向 展示Web  丁界
。 Template  类基
方的 模 引 Smarty ,
模 件
使用Smarty 的语法,扩展名为tpl 。Template 类公开了 as ­
sign  和display 两个方法‘assign 将控制器返回的数据替换入
模板‘display 根据模
对模 行解释,生
2.5
模式的设计围
和处理数据展开&在业务 中,
数据 为 数据库中的 (表);然而在软件设计中,
数据表现为内存中的对象&为了实现关系与内存对象之间的数据转换,本文在模式层设计
量级、可扩展的对象-关
(Object/Relation  Mapping ,简称 ORM )机制,
计类,如图'
&
-dbosource  -fiKdo .....
-save()-uapdate  -delete()
图'模式部分类图
DbManager 是直接 数据库的抽象基类‘connect 属
数据库连接对象,config
数据库配量
串,getData 方 行Select 语句返回数据,runSql 方法
行 Insert 、Delete 、Updte  等 SQL  语句 & 子类 MySQL
和SQLServer 是DbManager 针对
种 数据库的具体
得模
持多种数据库&类DboSource  对象数据与
数据的转换,其核
心prepare 方
SQL  ,将对象 的数 数(S
params )纟
合 SQL  规范的 SQL  ,
Db ­
Manager  执行& ,根据参数合成Select  的思 下&
5
SELECT  {/ params(field z ]} FROM  {/ params  (table')}
WHERE  {/ params(conditionsf } ORDER  BY  {/ params (or- der ]}
这里,数组参数S  params(table')、S  params  (field')、* pa-
ramsfconditions'和S  params (order )分别表示表名、字段名、
筛选条件和排序条件&
3 Web 框架的应用
基于MVC  Web 框架,笔者设计
程序设计实训
Web
。实训课程中,学生需 合作共
训项目,- 子作业,教师根据
中每个
的工作量来评定 &根据项目需求!定为 管理、小组管理和作业管理3 模块&
管理模
、登录和 管理等 ;小组管理模的建立和删除、小组查询、组员加入和退出
等 ;作业管理模块中,面向教师的 为作业发布、作业
和 ,面向组长的 为接收作业、分配子任务
和提交作业,面向组员的 为接收子任务、提交子任务等&
计的 MVC  Web  框架 Web  的
键基础功能! 构划分为模式、视图和控制
器三部分,开发时只需对各部分进行必要的扩展和补充即
种方 大简 Web  的开发&
在控制器方面,针对用户管理、小组管理和作业管理等 模 分
UsersContro l er 、
TeamsContro l er  和 Pro ­
jects  Controller3个控制器子类&每个控制器内部可实现了
Action#功能),,
管理控制器 UsersController,
内部实现了 UserRegister 、UserLogin 、RemoveUser 、EditUser  等 Action o  Web  请求中,通过指定 ct(Controller)和 ac # Ac ­
tion)! 数,可以调用指定控制器的指定 ,处理 1
请求。
对于每
Action ,
计与 的专用模式子
类。模式子类
自Model 父类, 处理和
Ac ­
tion  需的 定数据的 o  对
Action  和分
子任务 Action,分别设计了 LoginModel  和 SubtaskModel  两
个子类LoginModel 用于处理登录相关数据,SubtaskModel
处理子任务划分 数据。
需为每 Action  计对 的 模 ! 展
。 对 Action 和分配子任务Action ,分别
计 Login.tpl  和 SubtaskModel. tpl
Action  的 ! 4 。
程序设计实训
Web
系统
没有账号?
我的作业I 術刊笹
# 子任务 权枣%
描述
1 需求分析
30 撰写需求分析文档
2 文的写  20
撰与项目设计和用户便用文档
3
代码实现 50 蔡统设计、编程和测试
添加子任S  确定分配
程序设计实训Web 系统部分界面(上图为登录界面,下图为分配子任务界面)
54-57.
[2(
图44总结
MVC 设计模式通过 程序分离为模式-视图-控制
3个部分,
对 的分层和解耦,提高 件设计
的灵活性。分层结构使得MVC 具有耦合
、重 高、便
部署、易于测试等优点。本文基于MVC 模式自 计开
发 高效率、可扩展的轻量级Web 框架,并在该框架的基础
计 程序 计 训 Web  。 !本
的MVCWeb 框架为Web  开发 技术 :,
简 开发工作! 高 开发 率!
的 定
和。
参考文献
[1(冉启武,皇金锋,董锋斌,等.基于MVC 模式的教学管
spring framework表达式assign理电子信息系统设计[J(.现代电子技术,2020,43(4):
3(
[4(
张翠翠,周国祥,俞磊,等.基于MVC 的试卷生成及主
观题判卷算法 [J (.系统仿真学报,2020,32 (1):
105-1122
王俊芳,李隐峰,王池.基于MVC 模式的ThinkPHP
框架研究[J (.电子科技,2014,27(4):151-153.
Sunardi  A !Suharjito2MVC  architecture : acompara- tive  study  between  laravel  framework  and  slim  frame ­
work  in  freelancer  project  monitoring  system  web  based
[J (. Procedia  Computer  Science , 2019, 157 (C): 134-
1412
[5( Laaziii  C , Benmoussa  K , Khoulji  S , et  8. A  Compar ­
ative  study  of  PHP  frameworks  performance 'J (. Pro ­
cedia  Manufacturing , 2019,32(1) : 864-871.
(收稿日期:2020. 07. 03)
・6

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。