一种Web系统前后端分离方法与流程

文档序号:19081501发布日期:2019-11-08 22:37阅读:2643来源:国知局
一种Web系统前后端分离方法与流程

本发明涉及计算机架构技术领域,具体涉及一种web系统前后端分离方法。



背景技术:

传统的互联网应用中存在大量前后端耦合的web系统。随着互联网技术的快速发展,目前出现了前后端分离的web系统,逐渐得到业界的广泛采用。这种前端与后端分离的目的之一是做到专业化分工,提高项目的质量和开发效率,还可以降低前端对后端的依耐性。

现阶段的web项目中,前端与后端(通常指客户端与服务器端)分离架构应用十分普遍,广泛应用于单页面模式、cordova等各类工程。后端只负责提供数据和计算,而不负责展现,而前端则负责接收到数据后,组织数据并展现。这样的前后端分离架构结构清晰,各自侧重点分离,前后端之间会变得相对独立并松耦合。

前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,ios等等)打下坚实的基础。

其中,web服务器:一般指像nginx,apache这类的服务器,他们一般只能解析静态资源;

应用服务器:一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好;一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。

注:

节点是指一台电脑或其他设备与一个有独立地址和具有传送或接收数据功能的网络相连。node节点,或结点,或网点节点,可以是工作站、客户、网络用户或个人计算机,还可以是服务器、打印机和其他网络连接的设备。

nginx(enginex)是一个高性能的http和反向代理web服务器,同时也提供了imap/pop3/smtp服务。nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(imap/pop3)代理服务器,在bsd-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试jsp程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好apache服务器,可利用它响应html(标准通用标记语言下的一个应用)页面的访问请求。实际上tomcat是apache服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat时,它实际上作为一个与apache独立的进程单独运行的。

以前的javaweb项目大多数都是java程序员又搞前端,又搞后端。随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。



技术实现要素:

本发明要解决的技术问题是:为了解决web系统开发中前后端职责不清,开发效率问题,对前端发挥的局限,耦合问题,本发明提供了一种web系统前后端分离方法。

本发明所采用的技术方案为:

一种web系统前后端分离方法,所述方法的实现过程包括:web系统前端的html页面通过ajax调用后端的restfulapi接口,进行数据交互。

前后端分离的web系统,其后端提供基于restful架构的数据接口,前端基于此接口展示页面,以此做到前后端的完全分离,其中,restful是指符合rest(representationalstatetransfer,表现层状态转化)风格的一种流行的数据接口架构。由于这种前后端分离的web系统,其前端程序不依赖于后端程序,从而有利于程序的扩展维护,也可以便于前后端的开发人员互不依赖地进行并行开发,并且后端可以跨终端提供通用的服务。

所述方法实现过程包括内容如下:

web系统的前端为系统架构的view层和controller层,负责实现前端页面及前端交互逻辑,并利用ajax与中间层node.js服务器进行交互;

web系统的后端为系统架构的model层,负责业务处理和数据处理,并提供api接口,利用redis来管理session,与数据库交互。

注:

node.js是一个基于chromev8引擎的javascript运行环境。node.js使用了一个事件驱动、非阻塞式i/o的模型,它让javascript成为与php、python、perl、ruby等服务端语言平起平坐的脚本语言。

ajax指异步javascript及xml(asynchronousjavascriptandxml),源自描述从基于web的应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的web应用体验着色使之像桌面应用一样。ajax的核心是javascript对象xmlhttprequest。通过ajax,可以编写javascript代码来改进html,创建出丰富的交互性用户体验。

redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。

session:在计算机中,尤其是在网络应用中,称为"会话"。它具体是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。

model层:数据库实体层,也被称为entity层,pojo层,包含的是一些实体对象,如student对象。

view层:结合control层,显示前台页面、视图。就是用户用户可以看到的东西。后台怎么处理不关心,只关心怎么样想用户展示信息。

control层:业务模块流程控制,调用service层接口。也可以成为action层,集合了各种action、业务模块流程。

service层:业务操作实现类,调用dao层接口。它向上层的controller层提供接口。

dao层:数据业务处理,持久化操作。

所述方法实现过程包括:在项目设计阶段,前后端架构负责人将项目整体进行分析,确定api风格、职责分配、开发协助模式,设计确定后,前后端人员共同制定开发接口。

所述方法实现过程还包括:在项目开发阶段,前后端人员各自分工,协同敏捷开发,后端提供restfulapi,并给出详细文档说明,前端人员进行页面渲染前台的任务:发送api请求(get,put,post,delete等)获取数据(json,xml)后渲染页面。

api就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的api而使操作系统去执行应用程序的命令。

restfulapi:url定位资源,用http动词(get,post,put,delete)描述操作,就是rest风格的api,通过一套协议来规范多种形式的前端和同一个后台的交互方式。restfulapi由后台也就是server来提供前端来调用。restful是典型的基于http的协议,前端调用api向后台发起http请求,后台响应请求将处理结果反馈给前端。

所述方法实现过程还包括:在项目测试阶段api完成之前,前端人员会使用mockserver(搭建一个临时的server,模拟那些服务,提供数据进行联调和测试。)进行模拟测试,后端人员采用junit(junit是一个java语言的单元测试框架)进行api单元测试,不用互相等待;api完成之后,前后端再对接测试。当然并不是所有的接口都可以提前定义,有一些是在开发过程中进行调整的。

所述方法实现过程还包括:在项目部署阶段,利用nginx做反向代理,通过java+node.js+nginx方式进行,由nginx判断请求的页面类型,决定这个请求究竟是要转发给node.js还是java。

nginx就是反向代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端。

所述java、node.js、nginx采用同集群部署方式,java、node.js、nginx的进程都跑在同一台机器上。

所述java、node.js、nginx采用分集群部署方式,nginx+java一个集群,node.js单独一个集群。

本发明的有益效果为:

本发明方法可以节约软件开发时间成本,在开发过程中前后端工作人员职责划分清晰,并且对于出现的问题清晰定位。可以实现真正的前后端解耦,减少后端服务器的并发/负载压力。

附图说明

图1为本发明方法实现技术流程示意图。

具体实施方式

下面结合说明书附图,根据具体实施方式对本发明进一步说明:

实施例1:

如图1所示,一种web系统前后端分离方法,其中:

web系统前端的html页面通过ajax调用后端的restfulapi接口,进行数据交互;

web系统的前端为系统架构的view层和controller层,负责实现前端页面及前端交互逻辑,并利用ajax与中间层node.js服务器进行交互;

web系统的后端为系统架构的model层,负责业务处理和数据处理,并提供api接口,利用redis来管理session,与数据库交互。

所述方法实现过程包括:

1、在项目设计阶段,前后端架构负责人将项目整体进行分析,确定api风格、职责分配、开发协助模式,设计确定后,前后端人员共同制定开发接口。

2、在项目开发阶段,前后端人员各自分工,协同敏捷开发,后端提供restfulapi,并给出详细文档说明,前端人员进行页面渲染前台的任务:发送api请求,获取数据后渲染页面。

3、在项目测试阶段api完成之前,前端人员会使用mockserver进行模拟测试,后端人员采用junit进行api单元测试;api完成之后,前后端再对接测试。

4、在项目部署阶段,利用nginx做反向代理,通过java+node.js+nginx方式进行,由nginx判断请求的页面类型,决定这个请求究竟是要转发给node.js还是java。

实施例2:

在实施例1的基础上,本实施例所述java、node.js、nginx采用同集群部署方式,java、node.js、nginx的进程都跑在同一台机器上。

实施例3:

在实施例1的基础上,本实施例所述java、node.js、nginx采用分集群部署方式,nginx+java一个集群,node.js单独一个集群。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及包含指令的计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1