APP下载

基于Java的Web软件程序框架分层设计探讨

2022-09-07黄丽萍

信息记录材料 2022年7期
关键词:程序开发服务器分层

黄丽萍

(广西盈赛数字科技有限公司 广西 南宁 530011)

0 引言

在信息化时代下,互联网已经渗透到了人们生活、生产的方方面面,而人们生活、生产中的大量线上需求,如网上购物、支付、打车、工作等,都需要通过Web类型的软件程序来实现,这会使Web软件程序承担大量的客户访问及业务运行压力。而且当前人们对于Web软件程序的功能及效率需求也越来越高,这就给Web软件程序的框架设计提出了更高要求。只有高效、安全且扩展灵活的程序框架结构,才能保证Web软件程序的有序开发和顺畅运行[1]。

自20世纪80年代开始,程序的开发与设计日益广泛和普遍,最初由于程序的功能需求单一,所以程序的开发与设计采用的都是单层结构,国内外均是如此。此后,随着计算机软硬件的迭代发展以及程序功能需求的增加,单层结构的程序开发与设计逐渐无法再适应现实的需要,于是便出现了多层结构[2]。分层设计最先开始在国外得到了广泛应用,进入21世纪后在我国也快速普及起来,现如今已经成为主要的程序开发设计方式[3]。

1 分层设计概念

随着信息化设备以及互联网的广泛普及,人们对于各种程序应用的需求性、依赖性也越来越强,程序开发设计逐渐成为一项关键和重要的课题,不论是程序语言、辅助技术还是框架结构都在不断改进、完善与升级[4]。如在最初的程序开发设计中,由于技术设备的限制以及功能需求较为单一,所以程序的框架结构是扁平化的,这足以满足程序开发设计、运行维护的需要。但是随着技术设备性能的提升以及功能需求的增加,程序的规模变得越来越大,结构越来越复杂,扁平化的程序框架结构难以再适应程序开发设计的要求,容易出现结构混乱、组织无序以及维护升级复杂等一系列难题。分层设计是与扁平化框架结构相对应的一种程序开发设计框架模式,它打破了扁平化的框架结构体系,使程序开发设计的组织更加井然有序[5]。如它将程序的前端与后端相分离,相互之间通过专门的接口通道连接,彼此协调、配合,完成程序的整体运行,实现相应的功能供给。最基本的分层设计是双层模式,它概括性地将程序的前端与后端分离开来,除此还有三层模式、四层模式以及五层和多层模式,其不同之处在于,对后端进行了更加详细的层次划分,如将数据层和业务层进一步分离开来。

2 分层设计的特征与优势

2.1 分层设计的特征

分层设计的主要特征是改变了原始的扁平化程序框架结构,显著地增强了程序开发设计的组织性和有序性[6]。通过分层,不同层次的程序开发设计只需要专注其本身应当实现的功能,不需要考虑其他功能如何实现,如在前端的显示层、交互层中,只需要考虑如何向用户展示充分的信息,如何引导用户提交其所需的功能需求等,并向用户反馈结果,至于反馈结果是如何得出的,它则不需要考虑。而在后端的业务层中,就只需要考虑如何处理用户的需求,不需要考虑如何与用户交互,数据层的功能则更加纯粹,只需要存储数据,提供数据的查询、更新等功能即可。需要注意的是,在分层设计中,虽然程序的各个层次具有明确的界限划分,但是它们依旧是一个严密的逻辑整体。

2.2 分层设计的优势

除了可以使程序的开发设计更加井然有序之外,分层设计的主要优势还有以下几点:(1)程序的管理、维护更加方便,稳定性更强。由于分层设计将不同的功能层划分开了,只是存在逻辑上的联系,所以如果需要对层序的某一层进行管理、维护,不会涉及和影响到其他层,一般情况下只需要对本层做出调整,便可以使程序稳定运行[7];(2)程序的拓展性更强,如果需要的话,可以随时在业务层中进行程序的功能拓展和优化,不会影响到其他层的运行;(3)分层设计能够大大提高程序开发设计的效率,不同分层的开发设计工作可以同时进行,加快程序开发设计的周期,不同层之间只需要提前协商、预留好接口即可;(4)一些功能模块可以重复性使用,这有助于加快开发设计效率,降低开发设计成本。

3 基于Java的Web软件程序前后端分离部署结构

在基于Java的Web软件程序框架分层设计中,前后端分离部署是最基础的结构模式,它将前端的服务器与后端的服务器分离,形成双层结构。

3.1 前后端分离部署结构分析

前后端分离部署结构见图1。

前后端分离部署结构中需注意以下几点:(1)前端程序运行在前端服务器;(2)后面程序运行在后端服务器;(3)用户端通过浏览器向前端服务器进行页面请求;(4)前端服务器返回请求Web页面;(5)Web页面通过AJAX向后端服务器发出数据接口请求;(6)后端服务器返回数据给Web进行数据加载显示。

3.2 前后端分离部署结构的优势

基于Web的软件一般都由前端交互程序和后端服务程序组成,前端与后端以一个怎么样的模式协同工作是一个基于Web软件程序框架必须解决的问题。早期基于Web的框架大多是前端和后端代码交织在一起开发,由此带来许多问题,开发效率低下,代码易被污染,排查错误及后期维护困难,扩展功能不灵活。尤其是如果前端和后端是不同程序员开发,程序出问题后,还有可能发生互相推卸责任的问题,前后端不分离,也就不存在高效、灵活的技术框架,所以一个优秀的基于Web技术框架的开发模式必须采用前后端分离开发模式。

基于前后端分离开发模式,可以得到上面的前后端分离总署结构。因为前端程序和后端程序是独立的,所以可以将两个程序分开部署运行,这样部署有以下几点优势。

(1)前后端程序更新可互不影响。当某一端的程序需要更新时,只需要暂停要更新的目标程序,而不会影响到另一个程序运行。

(2)用户体验更友好。一般前端使用的是静态页,程序比较稳定,后端因为要承受大量请求处理及数据库交互比较容易发生异常,前后端程序分离运行后,在后端发生异常错误时,用户还能浏览网页,不至于出现诸如404、505的错误页面。

(3)并行开发,效率高。前端和后端程序分开运行,前后端开发互不影响,只要按照约定的接口就能做到自己调试程序,这样就能实现并行开发。

(4)减轻后端服务的负载压力。如果前后端不分离,服务器势必要处理前端请求和后端请求,如果用户请求量大的话,服务器容易过载,分离部署到不同服务器上,后端服务器负载压力就可以大大减轻。

(5)可以更好地保护后端服务器。当后端服务器压力超负荷时,会给数据库造成影响,所以后端服务显得尤为重要。前后端分开部署运行后,用户访问时首先请求的是前端服务,在前端用户请求数超负载时,我们便可以在前端服务器做应急措施,不至于让后端程序直接受到攻击。

4 基于Java的Web软件程序包模型结构

为了完善分层设计,在基于Java的Web软件程序后端服务器中,其不同的业务模块需要相互独立,并通过maven将不同的业务模块进行粘合打包,使程序的组织更加有序。

4.1 程序包模型结构及说明

程序包模型结构见图2。

程序包模型结构说明:(1)后端框架使用spring boot技术,主服务仅有一个启动服务的功能,对此我们称之为壳;(2)通过maven将多个业务模块jar包粘合到壳中再进行打包。

4.2 结构分析

场景:市场人员要求软件按照客户购买的功能提供对应的功能接口服务,并且软件要部署到客户的服务器上去。该软件业务较为复杂,且业务模块相对独立,不互相影响。

如果按常规做法,把所有业务模块放一起开发打包,虽然也可以使用一些方法来限制用户只能使用购买的功能,例如通过拦截器做权限判断,但是如果某些软件业务包依赖包含有个别大文件的工具包时,而且用户非未购买这些服务时,软件包就显得不这么精巧,也就是说里面存在了冗余包。上面的程序包模式结构就解决了这个问题,把业务模块解耦,按业务功能划分成独立的业务包,主程序服务只提供启动服务,当客户需求定下后,只要把需要的包丢到壳里面去打包就可以有相应的功能服务[8]。这样操作的优点有如下几点。

(1)采用分包结构后,就能按客户购买功能提供功能服务市场要求,不需要再写程序代码控制,从结构上就实现了这点需求,从实现方法来说是代价最小、最简单的方法。

(2)扩展性强,高度解耦。业务包之间都是独立的,不互相影响,要增减功能都非常好控制,配置灵活。

(3)打包精准,不存在冗余包。

(4)开发效率高。如果所有业务包都做成一体,开发时,Java项目启动时会很慢,在调试某一个业务功能时,显然降低了工作的效率。业务包解耦后,开发什么功能就依赖哪个业务包,程序启动速度会快些,从而提升工作的效率。

(5)缩小测试范围。很多程序员在项目修改某个业务功能时,如果只做针对该业务的测试,程序发布后,用户在使用时可能会出现其他功能问题,跟踪后就发现另一个包的程序改动了,但一起打包发布了。出现这种情况后,测试人员不得不每次都对整体进行全流程测试。采用分包模式后,在打包后把对应的业务模块生成到外包lib目录下,修改了哪个业务模块就替换掉哪个业务模块包,测试时也可以只针对该业务测试,这样就不用每次都做全流程测试了。

5 基于Java的Web软件程序服务层模块结构

在基于Java的Web软件程序中,其服务层也需要进行合理的分层设计,以使业务的开发、组织、调用更加有序。

5.1 服务层模块结构及说明

服务层模块结构见图3。

服务层模块结构说明:(1)对外接口调用对应的业务服务模块的服务功能;(2)业务服务模块书写逻辑;(3)单表服务模块仅操作做对应单表,供业务服务模块按业务逻辑调用;(4)单表服务模块都是基于MyBatis-Plus搭建的。

5.2 结构分析

该结构有两个最大的特点,一是底层采用了MyBatis-Plus,二是对服务层的再分层。

(1)MyBatis-Plus(opens new window)(简称MP)是一个MyBatis(opens new window)的增强工具,在MyBatis的基础上只做增强不做改变。MyBatis-Plus数据库操作功能非常强大,只需要调用该工具的方法就能对数据表进行读写,开发速度可得到极大提升。

(2)对服务层的再分层。一般基于service层(服务层)为单层结构,设计成双层原因就在于采用了MyBatis-Plus。MyBatis-Plus决定了服务层是单表服务模块。MyBatis-Plus的数据库操作接口函数都是针对单表的操作,即能发挥单表服务的优势又能适用于复杂的业务,需把服务层进行再分层,按数据表建立相应的单表服务模块,按业务划分业务服务模块,然后由业务模块按照业务逻辑调用单表服务模块,这样模块接口条理清晰,数据表操作服务简单轻巧,抽象度高,可被不同的业务服务模块复用。

6 结语

随着软硬件技术的发展,功能需求的不断提高,传统的单层框架程序开发模式已经不能再适应如今的需要。应当积极探索与合理应用好分层设计,用组织更加有序的框架,来进行程序的设计与开发,这样才能提高程序设计与开发的质量,增强设计与开发的规范性,加快设计与开发速度,降低设计与开发成本。本文对基于Java的Web软件程序框架分层设计进行了探讨,分析了分层设计的实际应用及其与相关程序开发技术的融合,希望能进一步促进分层设计的推广和应用。

猜你喜欢

程序开发服务器分层
高中分层走班教学模式探究
浅析大学生在兼职小程序开发中遇到的问题
有趣的分层现象
雨林的分层
2018年全球服务器市场将保持温和增长
VBA在Excel中的应用一例
利用OpenGL技术实现网格波动效果界面
跨越式跳高递进与分层设计
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵