基于移动互联WEB开发的MVC模式研究

2019-10-21 20:25孙林于海春李星宇
科技风 2019年23期

孙林 于海春 李星宇

摘 要:随着网络信息技术的发展,基于B/S的web分布式应用体系架构已经被广泛地应用。MVC设计模式的出现,将模型层、视图层、控制层进行分离,极大的降低了各组件之间的耦合度,提高了代码的重用性可维护性。文章讨论了SpringMVC等后端技术框架,B/S三层技术架构模式等架构思想。同时采用层次化、组件化和面向对象的设计思想,尽量降低不同功能模块之间的耦合粒度,以保证系统的可擴展性。

关键词:MVC模式;SpringMVC;软件架构;WEB开发

1 web应用技术的起源和发展前景

Web应用发展的集中在分布式计算领域,Web 系统从开发出现以来,就以成本低、推广易、灵活性高为优势,在计算机领域得到了迅速的发展。当前,Web 系统已经成功的应用社会生活中的方方面面,这也成功的推动了IT 浪潮的发展,在看到IT技术企业所展现的巨大经济利润之后,对于Web 系统的开发更为迫切。

为了解决一类重复出现的问题,从而使代码不断使用形成一套重用的解决方案,人们引入了设计模式的概念。对于软件开发过程中产生的冗余和重复的代码,我们通过应用例如:单例模式、观察者模式、工厂模式等设计模式的思想,会在开发中提供一套全新的解决方案,使代码达到高内聚、松耦合的效果。

2 MVC三层架构分析

MVC全名是Model View Controller,分别代表着模型层,视图层和控制层。MVC和软件开发的三层架构有着极为密切的联系,在web项目开发中使用三层架构的总体布局,具体采用MVC模式的软件设计风格,通过SSM/SSH(Spring,SpringMVC,Mybatis/Hibernate)等框架进行具体业务的分析和搭建完成整个项目的提交。

在SpringMVC框架中,DispatcherServlet(前端控制器)占据核心位置,一方面负责接收客户端用户的请求,另一方面它会与HandlerMapping(处理器映射器)进行交互,此过程中会根据XML配置和JAVA类中的注解产生执行结果,之后由后端控制器与处理器映射器进行交互,将执行结果的ModelAndView(模型和视图)回抛给前端控制器进行解析和渲染视图产生具体的View(视图)返回给客户端用户。整个流程充分应用各个组件的作用,工程师只需要进行View视图的渲染和处理器Handler的开发,极大地减少了开发过程中的代码量,降低了代码的耦合度,各个模块的业务之间相分工明确、相互联系,使得开发周期大大缩减,推动了C/S(客户端/服务端)架构的迅速发展。

2.1 视图层(JSP)

View视图用来渲染模型。视图层是用户直接看到的Web应用的界面,它为用户提供了一个可视化的界面和操作空间,也是用户与Web应用进行直接交互的渠道。在JavaWeb中,视图层不仅支持HTML、XML、XHTML等基础标记语言,还支持JavaScript、Bootstrap等脚本、框架语言,甚至还可以支持JSP通过后台动态生成页面,作为实现真正的用户交互功能的媒介,视图层使得MVC架构的Web应用功能更加强大丰富。

2.2 模型层(DAO)

Model(模型),表示应用数据和业务规则。模型层是真正用来实现各项功能的模块,负责处理业务逻辑和业务规则,例如连接数据库进行增删改查操(DAO)、动态生成页面等交互功能。在使用DAO构建模型层的同时,还可以配合缓冲池、缓存等技术手段来降低数据库的访问量,从而提升MVC框架应用的稳定性和并发查询能力。

2.3 控制器(Servlet)

Controller(控制器)的核心功能主要分为两部分。一方面解释客户端界面的输入,调用Model模型中的方法,另一方面通过将模型数据和执行结果填充至视图中,进而把View视图显示给用户,这一过程主要由Servlet完成。在SpringMVC中,对于客户端提交的请求经过DispatcherServlet分发之后到达控制器,在业务处理层处理之后会将结果进行封装,从而产生一个Model,然后经过View视图层交互之后就会将Model进行展示。因此当接收到用户的请求时,它只是决定调用哪些Model层和View层去进行处理和返回执行结果,但是控制器本身不会有任何输入和输出。

2.4 MVC架构优势分析

(1)可以降低各模块之间的耦合度;

(2)实现各层之间的代码复用;

(3)有利于实现代码的标准化;

(4)有利于系统的动态模块化更新;

(5)便于团队分工开发。

3 旧模式开发缺点

不使用框架进行Web应用开发会造成以下几个缺点。

(1)HTML和JAVA代码同时在JSP页面中进行编写,增加开发周期,降低了代码的可读性;

(2)在实现各模块的业务逻辑时,由于代码复杂混乱,对团队的分工开发造成困难;

(3)后期对系统进行运维和功能扩展时会非常麻烦。例如在JSP页面进行数据库连接和操作,如果需要对数据库进行任何修改,都必须打开所有操作数据库的JSP页面进行相应的修改,当页面非常多的时候,工作量相当大;

(4)系统不容易调试,由于HTML、Java、JavaScript都混合在一起,而Java语言的运行需要每次修改后都重新编译运行,因此必须要启动服务器并调用 JSP页面才能查看运行效果。在进行大型项目开发时,启动速度慢,效率低下。

当Web应用程序功能十分简单时,如果再遵循MVC框架进行开发,那么就会导致原本的简单系统反而变得复杂、冗余,会徒增多余操作,从而降低简单系统的运行效率。

4 MVC架构性能提升

如果仅使用简单的MVC架构进行开发,毫无疑问,这个Web应用的性能也是有瓶颈的,受到服务器内存、CPU等性能和并发量等条件的约束。

4.1 静态缓存

静态缓存是指将MVC框架中的视图层中的HTML、JSP中的HTML、JavaScript、图片、视频等静态文件和资源通过缓存、增加响应方式等方法,降低Web应用和服务器的压力,从而提高系统性能。

(1)CDN技术。CDN全称是ContentDeliveryNetwork,即内容分发网络,通过部署边缘镜像服务器,智能调度算法等操作,使用户就近访问静态资源,降低网络拥塞,提升主站系统性能。

(2)服务器内存缓存。通过Varnish,实现服务器内存缓存静态资源功能,效率高。

(3)Nginx內存缓存。通过修改Nginx配置文件,实现Nginx的内存缓存静态资源功能,灵活性和效率都很高。

4.2 动态缓存

动态缓存是指将MVC中需要经过模型层处理后的动态生成的资源进行缓存。

适用条件:

(1)此动态资源被请求数量多;

(2)此动态资源被修改次数少;

(3)此动态资源对即时性要求低。

例如在购物网站的场景中,每个店家的商品资源就可以使用动态缓存技术,从而提升性能和稳定性,抵抗高并发。每个店家的商品可能在同一时间内被多次请求查看,将此动态资源放入动态缓存中,于是每次请求都不需要查询数据库,避免了大量的数据库的IO操作。当有商品被修改时,只需要重新请求一次数据库,再做缓存即可。

5 结论

综上所述,在JavaEE等web项目开发中,MVC设计模式的应用在很大程度上减小了不同程序间的差异性,将错乱复杂的程序设计变得更容易,改善程序的理解性的同时增强程序的可维护性,弥补目前程序开发技术的不足,给互联网络注入新的生机和活力。

参考文献:

[1]闫帅领,徐蕾,赵亮,苏冬梅.基于MVC模式的信息系统开发模式研究[J].科技与创新,2018(08):22-23.

[2]张雪敏.浅议MVC设计模式在JavaWeb中的作用[J].科技风,2018(22):58-59.

[3]于春娜,王晨升,杨光,郭世龙,刘丰.Web前端MVC框架的意义研究[J].产业与科技论坛,2014,13(01):52-53.

作者简介:孙林(1998-),男,专业方向:电子信息工程。