基于MVC框架的WEB系统项目的设计研究

2021-11-05 07:47东莞理工学校张屹峰
电子世界 2021年17期
关键词:功能模块代码实体

东莞理工学校 张屹峰

1 MVC框架

对于早期的Web系统项目来说,最直接快捷的开发模式就是先设计好基于HTML的前端页面,然后在此基础上根据业务逻辑嵌入后端处理代码。也就是说页面展示与业务逻辑是密不可分的。这样做对于简单需求的中、小型Web系统项目来说,在某种程度上当然能够降低开发的难度和成本,但随着项目需求复杂程度的提高,这种开发模式显然会造成开发效率的低下,维护成本的提高。因为前后端开发人员必须要相互兼顾彼此的业务逻辑,而前后端代码的嵌套也直接造成了系统的高耦合,大量的冗余代码片段造成系统的臃肿和难以维护。而MVC框架就很好的解决了这个问题。MVC的概念从上世纪七十年代就已经被提出,经过几次演化后,在由SUN公司开发出JSP Model2中,对Web MVC进行了最早的实践。

MVC即Mode(数据模型)-View(视图)-Controller(控制器)。其中Controller是资源的调控中心,用于接受来自用户的请求,调用View和Model的相关方法处理业务逻辑以便完成用户的需求。Model专门用于数据的处理,直接与数据库相关联,它定义了对数据库的相关操作,是Controller的数据来源。View是展示数据的相关页面,它不关心数据的处理逻辑,只负责数据的呈现方式,通常是在HTML元素或模板标记语言中嵌入获取的数据标记。多个View可以共享一个Model的数据,因而降低了代码的冗余度。基本流程如图1所示。

图1 MVC基本流程

2 项目系统架构设计

本文的Web项目系统基于PHP语言,采用MVC框架设计。这里仅以新闻管理、新闻展示功能模块为例说明MVC框架在Web项目系统中的应用。为方便说明,暂且不考虑用户登录注册等功能模块。系统文件结构如图2所示。

图2 新闻管理功能模块MVC框架文件结构

2.1 Model层设计

Model层直接和数据库打交道,在Model层中针对数据库中的表设计多个实体类,这些实体类与数据库表是一对一的映射关系。例如,数据库中的NEWS_TB表对应了Model层中的Newstb实体类。这样做的好处是将数据库表抽象出来,便于后期操作和管理,方便维护。而对于抽象出来的每一个实体类,都需要一个实体服务类与其对应,实体类与实体服务类也是一对一的映射关系。例如,Newstb实体类所对应的实体服务类为News_service类。实体服务类基于实体类创建实体对象$newstb_row,并为实体类对象提供了一系列操作数据库的方法。Model层结构流程如图3所示。

图3 Model层结构流程

其中,实体类主要代码片段如下:

实体服务类主要代码片段如下:

2.2 Controller层和View层设计

Controller层利用Model层创建的实体服务类创建一个实体服务类对象$newsService,在Controller层的功能模块中利用该服务类对象$newsService执行不同的方法完成相应的功能。View层作为展示内容的界面被包含到Controller层的相应文件中,为相关操作提供接口或数据录入界面。Controller层和View层的结构流程如图4所示。

图4 Controller层和View层结构流程

以Controller层的getallnews.controller.php文件为例,其中的Getallnewscontroller类主要代码片段如下:

2.3 系统入口设计

在图4中,可以看到系统设计了单一入口,也就是使用index.php文件处理所有的HTTP请求,无论是新闻列表页还是新闻详情页。在入口文件中,我们还可以对url参数和POST数据进行必要的安全性检查和特殊字符过滤、记录日志、访问统计等各种集中性任务处理,从而提高的系统的安全性,降低熊维护的成本和难度。主要代码片段如下:

结束语:本文只是以新闻管理系统中的部分功能模块为例,在基于PHP语言的基础之上简要分析了MVC框架的原理及设计流程。MVC框架以其低耦合性、高重用性以及较低的生命周期成本使得其应用越来越广泛。利用MVC框架可以快速部署项目,极大的方便了软件项目的工程化管理。但由于MVC框架增加了系统的结构和实现的复杂性,View层和Controller层关系紧密也从一定程度上造成了MVC框架使用的难度。因此,对于大型复杂需求的项目可以优先考虑使用MVC框架,对于中、小型项目建议还是不要使用。

猜你喜欢
功能模块代码实体
前海自贸区:金融服务实体
创世代码
创世代码
创世代码
创世代码
实体的可感部分与实体——兼论亚里士多德分析实体的两种模式
两会进行时:紧扣实体经济“钉钉子”
振兴实体经济地方如何“钉钉子”
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究