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

西域战神 2018-02-07 15:54:16 ⋅ 631 阅读

前后端分离的演变

记得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 代码方面的重叠。

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

优点:前端不需要学习后台开发语言,只需要调用API服务就好,前后端代码分别统一管理起来 形成自己的对接规范。这样前端可以和不同的后台语言做对接服务。

RESTful Api和Json搭建前后台交互

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

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

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

渐进式框架Vue.js

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

备注:先介绍到这里,有不同的想法可以下方留言一起讨论。


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

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



全部评论: 0

    我有话说:

    架构实战:认识下微服务架构

    微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。

    创业团队如何设计支撑百万并发的数据库架构

    我们来一下对于一个支撑日活百万用户的高并系统,他的数据库架构应该如何设计?

    架构实战(三)-Spring Boot架构搭建RESTful API案例

    之前分享了Spring Boot 整合Swagger 让API可视化和前后分离架构 受到了大家一致好评 ,本节就接着上节的代码做了详细的查询代码的补充和完善并搭建RESTful API架构案例。

    阿里技术:从单机至亿级流量大型网站系统架构的演进过程

    网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术......

    架构实战:认识下ZooKeeper和CAP及一致性原则

    一个分布式系统不可能同时满足以下三种一致性(一致性(C:Consistency) 可用性(A:Available)分区容错性(P:Partition Tolerance)

    京东技术:京东系统架构师如何让笨重的架构变得灵巧

    京东系统架构师,从事架构设计与开发工作,熟悉各种开源软件架构。在Web开发、架构优化上有较丰富实战经历。

    架构实战:一个可供中小团队参考的微服务架构技术栈

    作者近年一直在一线互联网公司(携程,拍拍贷等)开展微服务架构实践,根据我个人的一线实践经验和我平时对Spring Cloud的调研,我认为Spring Cloud技术栈中的有些组件离生产级开发尚有

    「轻阅读」6种常用的架构设计模式(上)

    可以帮助你轻松实现上述能力。我将讨论每个模式,他们...

    架构实战)-Spring Boot+MyBatis基础架构搭建

    Spring的追求一定是简单点简单点,让java的开发变得更加简单、容易。瞧瞧的告诉你们直接copy就能用哦~~~

    SpringBoot+zk+dubbo架构实践):本地部署zookeeper

    SpringBoot+zk+dubbo架构实践系列实现目标:自己动手搭建微服务架构

    架构实战:MyBatis一级、二级,并整合ehcache分布式缓存的使用,附演示实例

    ehcache是一个纯Java的进程内缓存框架,是种广泛使用的开源Java分布式缓存,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

    架构实战(十):Spring Boot 集成企业级搜索引擎 SolrCloud

    Solr是以Lucene为基础实现的文本检索应用服务。Solr部署方式有单机方式、多机Master-Slaver方式、Cloud方式。

    微服务架构学习笔记():重新认识微服务

    微服务(Microservice)是服务化思路的种最佳实践方向,遵循SOA的思路,各个企业在服务化治理的道路上走的时间长了,踩的坑多了,整个软件交付链路上各个环节的基础设施逐渐成熟了,微服务

    精品推荐:微服务架构下静态数据通用缓存机制

    在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。

    分享次单体架构改造成微服务架构的拆分实践

    从5个方面设计这次微服务的拆分方案,以及经验总结!

    架构实战(六):Spring Boot RestTemplate的使用

    RestTemplate是Spring提供的用于访问Rest服务的客户,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户的编写效率。

    架构实战(四):Spring Boot整合 Thymeleaf

    Thymeleaf 是种模板语言。那模板语言或模板引擎是什么?

    架构实战(十三):Spring Boot Logback 邮件通知

    日志对于应用程序来说是非常重要的,当你的程序报错了,而你又不知道是多么可怕的件事情,本文使用logback把程序报错信息邮件到开发者

    《CSS 揭秘》译者,百姓网前架构 TL 带来更多干货,等你来撩~~~

    春节小长假已经过完了,《IT实战联盟》 也开始准备更新更多优质的实战资源帮助大家解决工作中的实际问题。