文章编号: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,introduces 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 development,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小时内删除。
发表评论