Java Web架构实战篇:聊一聊先后端分离架构

timg-6.jpeg

####先后端分离的演变html

记得12年从事工做的时候公司尚未专门的前端人员,通常咱们都是先后端都会,毕竟那时候H5才刚刚起来微软的XP还在流行使用(默认系统自带IE6),IE的市场份额仍是蛮大的。作的产品也没有很炫酷的特效(若是有也会选择使用flex),那时候Flash 是超级火的......扯得有点远了。
在开发的时候也是一边API接口服务,一边开发页面,发布也是一个发布包搞定。前端通常只是负责切图工做,就是将UI设计师的设计图布局成静态页面,前端是不参与交互逻辑和业务开发的,前端也是当时统一的吐槽对象。当时淘宝的Web架构比较流行基本上都是基于MVC框架webx,因此前端写好静态html 而后后端开发人员翻译成vm模板.....
这样就致使了先后端工做的分配不均,开发效率慢,代码维护量也大。为了解决痛点 慢慢开始先后端分离的架构流行开来 很好的解决了先后端分工不均问题,将更多的交互逻辑分配给前端来处理,然后端则能够专一于其本职工做。例如后台开发能够有跟多的时间进行后台权限控制以及复杂的运算工做,先后台解耦 ,二者同时开始推动项目进度,增长开发效率。
复制代码

####如何进行先后端分离 最开始的时候是SPA式的先后端分离法,单纯的从物理层作区分(认为只要是客户端的就是前端,服务器端的就是后端),这种分法不能知足先后端分离的需求,认为从技术职责上划分才能知足目前咱们的使用场景,做者在工做中使用过两种方案:前端

第一种:
前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。
复制代码

优势:能够作url design,咱们能够根据场景决定在服务端同步渲染,仍是根据view层数据输出json数据,咱们还能够根据表现层需求很容易的作Bigpipe,Comet,Socket等等,彻底是需求决定使用方式。 缺点:须要前端来写Controller,以Java语言开发为例,须要前端学会Java开发,这样在处理复杂的业务逻辑的产品里双方都有Java 代码方面的重叠。web

第二种:
前端:负责View层。
后端:负责和Controller、Model层和业务处理/数据等。
复制代码

优势:前端不须要学习后台开发语言,只须要调用API服务就好,先后端代码分别统一管理起来 造成本身的对接规范。这样前端能够和不一样的后台语言作对接服务。json

####RESTful Api和Json搭建先后台交互后端

RESTful.jpg

备注:如今公司使用的RESTful 架构,后台提供一组设计原则和约束条件。缓存

RESTful 主要用于客户端和服务器交互类的软件。基于这个风格设计的软件能够更简洁,更有层次,更易于实现缓存等机制。
复制代码

RESTful Api和Json 技术的使用让先后端交互日益便利 先后端分离之后就存在数据交互的问题,如何快速、简洁、有效和统一的在先后台进行信息的交互,成为分离之后必须考虑的问题。 幸运的是, RESTful思想和Json数据标准的出现,使得这种交互日益便利,在前端,咱们耳熟能详的JS技术和框架对RESTful和Json的支持能够说已经水到渠成. 至于后端,无论什么语言,什么平台都有很是成熟的方案. 先后端的不一样发展趋势使得先后端分离需求日益明显.安全

####渐进式框架Vue.js bash

timg-5.jpeg

Vue  是一套用于构建用户界面的渐进式框架。与其它大型框架不一样的是,Vue 被设计为能够自底向上逐层应用。Vue 的核心库只关注视图层,不只易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化的工具链以及各类支持类库结合使用时,Vue 也彻底可以为复杂的单页应用提供驱动。
复制代码

timg-4.jpeg

备注:先介绍到这里,有不一样的想法能够下方留言一块儿讨论。服务器

总结:众所周知,Web开发自出现以来一直存在性能,表现和体验的先天不足,但时至今日,事实已经并不是如此,一些看上去甚至比桌面程序更炫的应用和网站横空出世,客户也被吊足了胃口。Web开发桌面化已是没法阻挡的潮流,而前端开发的需求应该会向更加注重界面表现,速度流畅,用户体验的方向发展,并且要求只会愈来愈高。 而在后端稳定、性能、安全、存储和业务等核心问题依然是主流,因此先后端的需求必将日益分化,注重表现和注重内在的先后端开发人员必将须要适合本身的舞台。架构

更多精彩内容请关注“IT实战联盟”公众号哦~~~

IT实战联盟.jpg
相关文章
相关标签/搜索