为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第一天 前后端分离设计模式探讨

标签:
Java

课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第2章 架构后端项目
主讲老师: 风间影月

课程内容:

  • 传统的javaWeb开发模式的流程请求示意图:

https://img3.sycdn.imooc.com/631750b100016dce14500566.jpg

传统模式的所有的HTML、JS、CSS都会和Java代码一起打入到一个War包当中。

  • 而现在比较流行的都是前后端分离交互开发。


    • 用户请求是通过浏览器打开某一网站。

    • 网站会渲染对应的前端页面,他是通过Nginx服务器上的。他会独立部署独立运行。

    • 而这个前端网站所访问的后端是一个单独的Java服务,是单独部署在另外一个服务器或集群当中。

    • 前后端交互是通过RestFul的方式进行接口交互的。

    • 后端处理完之后,都会通过JSON的方式,响应给前端页面。

在现在很多的应用场景当中,都包含这种方式。例如:IOS、Android、微信小程序等等。

这种模式有一个好处,即后端只需要开发一套服务,即可同时适配PC、IOS、Android和小程序。避免重复开发带来的工作量。

课程收获

一、什么是前后端分离?

大家一致认同的前后端分离的例子就是SPA(Single-page application),所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现。
从某种意义上来说,SPA确实做到了前后端分离,但这种方式存在两个问题:

  • WEB服务中,SPA类占的比例很少。很多场景下还有同步/同步+异步混合的模式,SPA不能作为一种通用的解决方案。

  • 现阶段的SPA开发模式,接口通常是按照展现逻辑来提供的,有时候为了提高效率,后端会帮我们处理一些展现逻辑,这就意味着后端还是涉足了View层的工作,不是真正的前后端分离。

SPA式的前后端分离,是从物理层做区分(认为只要是客户端的就是前端,服务器端的就是后端),这种分法已经无法满足我们前后端分离的需求,我们认为从职责上划分才能满足目前我们的使用场景:

  • 前端:负责View和Controller层。

  • 后端:只负责Model层,业务处理/数据等。

二、为什么要前后端分离?

关于这个问题,在网上也查找了些许总结,在自己的工作当中也有实际运用。具体如下:

前后端职责不清

在业务逻辑复杂的系统里,我们最怕维护前后端混杂在一起的代码,因为没有约束,M-V-C每一层都可能出现别的层的代码,日积月累,完全没有维护性可言。 而且,让前端工程师在本地运用后端服务,对其是痛苦的。

虽然前后端分离没办法完全解决这种问题,但是可以大大缓解。因为从物理层次上保证了你不可能这么做。

开发效率问题

淘宝的Web基本上都是基于MVC框架webx,架构决定了前端只能依赖后端。
所以我们的开发模式依然是,前端写好静态demo,后端翻译成VM模版,这种模式的问题就不说了,被吐槽了很久。
直接基于后端环境开发也很痛苦,配置安装使用都很麻烦。为了解决这个问题,我们发明了各种工具,比如
VMarket,但是前端还是要写VM,而且依赖后端数据,效率依然不高。
另外,后端也没法摆脱对展现的强关注,从而专心于业务逻辑层的开发。

对前端发挥的局限

性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作才能碰撞出火花,但由于后端框架限制,我们很难使用Comet、Bigpipe等技术方案来优化性能。

为了解决以上提到的一些问题,我们进行了很多尝试,开发了各种工具,但始终没有太多起色,主要是因为我们只能在后端给我们划分的那一小块空间去发挥。只有真正做到前后端分离,我们才能彻底解决以上问题。

课程截图

https://img4.sycdn.imooc.com/631750cb000115fa15020844.jpg

https://img3.sycdn.imooc.com/631750d40001f70e14980802.jpg

https://img3.sycdn.imooc.com/6317510a000187e717040940.jpg


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
2

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消