原因:开源不易,文档仅对已 Star 刚果商城项目的用户开放。
操作步骤:点击下方「Gitee 项目」和「GitHub 项目」按钮 Star 项目即可。 刚果商城所有端的代码都会完全开源,为了更好地完善这个框架,希望大家多多支持。
在传统的前后端分层设计中,通常是前端(Web/App)直接访问后端服务;而后端方面,随着容器化技术的发展,Monolithic 的架构正逐渐向 Microservices 进行转移,而这种架构下的微服务之间进行相互调用,得到最终的调用结果供前端消费。
在一般业务需求的驱动下(UI 驱动),前端消费的数据常见的情况是跨多个微服务提供的数据,为了减轻 Client 端的网络消耗(HTTP),往往需要 Server 端提供整合数据的能力,以及附加一些针对 UI 的逻辑处理。
源于 Domain-Driven Design 的 Server 端自然与面对 UI Driven 的 Client 端之间有需要协调的部分。特别是针对当时的业务形态:研发规范(Workflow)的场景,在各个其他业务线独立能力的基础上增加自有的逻辑,以及横跨多个业务交互的场景。
从本质上我们需要让业务的研发工作(FE/BE)更符合 SoC。
For Frontend:
For Backend:
在 BS 架构发展之处,典型的技术包括 PHP,JSP 等,那时候最常见的就是:一个人负责一个网站,一个页面一个文件。一个人承担了现在一个团队的角色,产品经理,开发,测试,运维统统一个人干,一个文件完成一个页面,包括处理请求参数,连接数据库,修改数据,查询数据,展示数据等等,可以说是一个蛮荒时代,这时候基本没有什么架构,代码质量基本全靠程序员自身素质。
很快地上述开发模式遭到普遍的摒弃,MVC 架构渐渐成为主流。值得注意的是 MVC 最早在 1978 年就被提出,那时候还都是 CS 架构的应用程序。在 MVC 架构里,Model(M)负责访问数据,View(V)负责显示数据,Control(C)负责处理消息,调用 Model(M)访问数据,并通过 View(V)显示数据。
到目前为止,BS 架构的应用体验还是非常差的,和服务器端交互也仅限于表单提交,并且会有较常时间的白屏。有了问题迟早就会有解决方案,后来出现了 AJAX 技术,我们可以通过 AJAX 技术做出非常酷的应用,当时最杰出的代表就是谷歌的 GMail 邮箱应用。以 AJAX 技术为代表的前端技术给用户体验带来了极大提升,使得前端技术在软件开发中逐步变得主流,前端技术和后端技术差别较大,抛开前端后端编程思想上的差异不谈,让一个写惯了 Java 代码的程序员去写简单的 JavaScript 还行,但是遇到富客户端应用场景就吃不消了。这就促使了一部分后端程序员去专职负责前端技术,就产生了专职前端程序员。我在 2007 年毕业后也做了 2 年多 J2EE 的,后来因为项目的机缘我才转做前端的。跟我类似,国内最初的前端基本都是从后端转来的。
那时候前端后端的协作方式有两种,第一种是前端写静态页面,后端将静态页面转成视图层模板,前端再复查后端转换的效果对不对。前端后端这么协作确实能够做出复杂的富客户端应用了,但是缺点也是相当地明显,后端必须要等前端完成以后才能开始视图层开发工作,如果前端能够一次性高质量完成工作还好,如果因为需求变动或代码质量能原因要返工,后端也要跟着一起来。第二种就是前端负责视图层,后端提供数据。这种方式解决了一部分问题,但是仍要前端后端密切配合,同事负责一块代码,要求前端熟悉后端语言,甚至了解后端架构。这两种模式都存在前端后端高度耦合的问题,沟通频繁,维护复杂,无法快速响应变化,代码的腐烂是迟早的事。
2009 年 Node 出现之初并没有引起什么轰动,但是它却带来了前端生态圈的空前繁荣。Node 让我们使用 JavaScript 的语法编写脚本和服务器端应用程序,让前端生态圈能够能够形成一个闭环。以前要做 JavaScript 的代码的合并压缩就要使用 Java 等语言编写的压缩的工具,因为编程思想和语法等因素导致前端很难了解和涉足后端的开发,有了 Node 这一切都有了可能。以 React, Angular, Vue 为代表的前端开发框架或工具给我们带来一种全新的开发模式:后端提供数据,前端渲染界面,前端后端通过 HTTP 请求传输数据。前端第一次这么独立,前端第一次这么拥有强大的能力,一切看起来那么完美,我们欢呼雀跃,前后端终于分离了。
从以上介绍来看,BS 架构的发展历史是关注点分离的演进过程。
但是我们还是会遇到很多问题。
那么,怎么解决呢?那就是引入 BFF。
什么是 BFF? BFF 这个词是 2015 年 11 月 Sam Newman 在他的一篇博客 (opens new window)中提出的。BFF 是 Backends for Frontends 的简写,为了前端的后端。Sam Newman 的博客还有一个副标题:Single-purpose Edge Services for UIs and external parties,为了用户界面或外部方的单一目的的边缘服务。用户界面比如我们常见的网页,或 App,外部方比如第三方 App,客户 App,企业微信,小程序等。其实这中模式更早一点就出现了,淘宝在更早一点的时候就设立中途岛项目,其主要内容就是 BFF。既然是为了前端的后端,所以跟前端更加密切,适合前端同事来负责;既然是后端,所以要部署在服务器。
BFF 主要负责以下几件事情:
我们最为熟知的,也是这个领域最早发力的当然是淘宝网了,同是阿里巴巴集团下的蚂蚁金服也在使用。有很多公司都在使用,只是相关信息披露的较少。
1)解放后端
2)赋能前端
3)扩展业务
开放通用接口给合作伙伴,多了一种合作的可能,以接口的形式提供服务,以接口的调用次数等收费。 开放通用接口给客户:我们的很多客户都比较大,有开发团队的,对于一些用户特殊的需求,我们客制化的成本也很高,得不偿失,这时候可以让客户基于我们的通过接口来实现特殊的业务逻辑。
4)产品质量
更加彻底的前后端分离模式,让前端后端架构更加清晰,让接口更加趋于稳定,促进自动化测试落地,从而提高产品质量。
那么多或大或小的公司都在使用这种开发模式,相信这些问题都得到了解决,至少得到了控制。因此不需要有太多担心。网站架构是不断演化来的,不是凭空设计的。果断开始,逢山开路,雨水搭桥,相应我们会走出一条更有特色的道路来。
🚀 系统提示:访问文档失败 🚀
原因:开源不易,文档仅对已 Star 刚果商城项目的用户开放。
操作步骤:点击下方「Gitee 项目」和「GitHub 项目」按钮 Star 项目即可。 刚果商城所有端的代码都会完全开源,为了更好地完善这个框架,希望大家多多支持。