周绍景 应杰 潘宏斌 黄建 杨正元
摘要:随着软件产业的快速发展,为研究应用的开发模式从前后端耦合演变为前后端分离的过程,通过分析前后端耦合开发模式到RESTful架构开发模式的优劣性,发现使用RESTful架构的应用具有开发周期短、层次分明和逻辑清晰等优势。
关键词:前后端耦合;前后端分离;RESTful架构
中图分类号:TP311.1 文献标识码:A 文章编号:1007-9416(2018)05-0059-02
随着软件规模的不断扩大,团队并行开发成为必然。前后端耦合开发模式无法最大限度的协调各团队开发,使得开发的项目耦合性高,结构不清晰。为了能很好的解决这一问题,传统开发模式演变成如今的前后端分离开发模式,相比传统开发模式新的开发模式拥有开发周期短、应用层次分明、耦合度低等特点。文章叙述了传统开发模式到新开发模式转变的过程,对传统模式和新模式之间的优劣性进行了分析。
1 前后端代码集成到分离的衍化
前后端耦合的开发模式将业务处理代码集成在用户视图中,为开发带来便捷的同时还有致命的缺陷:后端开发只能在前端开发完成后才能进行,造成了开发效率的低下;开发的项目层次不清晰,不利于项目的扩展与维护[1]。
MVC是一种被Web应用广泛使用的设计模式,它将应用分离成Model层,View层和Controller层[2]。View层存放与用户交互的视图;Model层细分为Dao层和Service层,分别用于与数据库交互和业务逻辑处理;Controller层粘合Model层和View层。当浏览器向服务器发起请求时,Controller接收到请求调用合适的Model进行处理,将所得的模型返回到相应的View中。MVC架构对请求的处理流程如图1所示。
MVC架构很好的解决了传统开发模式所带来的问题。在MVC架构中进行项目开发,对象间直接的横贯关系将不会带来依赖关系的组合爆炸,使各层功能明确、职责分明,项目的更新、维护和扩展更加的方便。但MVC架构还是存在如下缺点:(1)无法让各团体并行开发。(2)前端依赖于相应的后端模型[3]。(3)Controller层处理所有请求,服务器负载过大。
2 RESTful架构基本思想
RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTful是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。
RESTful架构将服务器分成前端服务器和后端服务器两部分,前端服务器为用户提供无模型的视图;后端服务器为前端服务器提供接口。浏览器向前端服务器请求视图,通过视图中包含的AJAX函数发起接口请求获取模型。MVC架构对请求的处理流程如图2所示。
项目开发引入RESTful架构,利于团队并行开发。在RESTful架构中,将多数HTTP请求转移到前端服务器上,降低服务器的负荷,使视图获取后端模型失败也能呈现。
3 RESTful架构项目的搭建及分析
3.1 项目搭建
使用Maven搭建SSM框架。在java包中新建user包用于存放controller、dao、entity和service层的代码。数据库中新建user表,用于存放user账号信息,分别包括id(主键)、用户名、用户密码。
在Controller层中创建deleteUser的方法,在方法上添加@ResponseBody用于将返回的对象进行序列化,添加@RequestMapping用于表明其所接收的请求方法和URI,在方法中调用账号删除的service对象进行业务处理。
在View层中创建一个带有账号、密码参数的表单,设置其请求方式为POST。由于前端界面只支持POST和GET两种请求方式,所以需要使用隐藏字段将PUT和DELETE的值传递给Controller進行相对应的操作,在标签中设置type为hidden,name为_method,value为delete表明使用DELETE的请求方式。
Controller识别GET和POST请求方式需要在web.xml中配置filter对请求方式进行拦截,filter标签调用名为HiddenHttpMethodFilter的类。该应用通过在前端视图的表单中输入需要删除的账号名称,然后单击删除按钮,进行账号删除操作,如果删除成功,那么将返回{“message”:”删除成功”,”stateCode”:200}。
3.2 应用分析
通过案例看出RESTful架构是基于HTTP访问协议对接口进行了抽象化,在数据交互使用轻量级的JSON格式,因此其拥有易访问,可扩展性强等特点[4]。但RESTful架构却不适用于所有的项目,当项目比较小时无需使用RESTful架构,项目变得更加复杂。
4 结语
文中对前后端耦合到前后端分离的开发模式进行了详细的阐述。MVC架构通过将Web应用进行分层实现了项目的低耦合性,提升了项目的可扩展性;RESTful架构基于MVC架构利用URI进行资源管理和访问,采用RESTful架构开发的项目层次分明、结构清晰,开发团体之间能够并行的开发降低开发周期。如今RESTful架构是应用最广的架构模式。
参考文献
[1]刘亮,霍剑青,郭玉刚,袁泉,王晓蒲.基于MVC的通用型模式的设计与实现[J].中国科学技术大学学报,2010,40(06):635-639.
[2] 张晓丽,路杨.基于MVC模式的Web OA系统的设计与实现[J].计算机技术与发展,2012,22(08):63-66.
[3]zhijinzhong.前后端分离springmvc和RESTful理解[EB/OL]. https://blog.csdn.net/zhijinzhong/article/details/54644872,2017-01-21.
[4] 孙祖汉,李莹,罗智凌,柳生鹏,高洪皓.可视化REST服务组合框架的设计与实现[J].小型微型计算机系统,2017,38(01):10-14.