其他分享
首页 > 其他分享> > BFF模式(前端的后端):介绍

BFF模式(前端的后端):介绍

作者:互联网

  想象一下,您需要使用微服务构建电子商务应用程序的场景。您可以为客户,订单,产品,购物车等具有微服务。微服务将暴露前端使用API。

  但是,通过微猎狼人返回到前端的数据可能不会根据前端需要表示它们的确切方式进行格式化或过滤。

  在这种情况下,前端需要自己拥有一些逻辑来重新格式化这些数据。在前端具有此类逻辑将使用更多的浏览器资源。

  在这样的情况下,我们可以使用BFF来将一些这个前端逻辑转移到中间层。中间层是BFF。当前端请求某些数据时,它将调用BFF中的API。

  BFF将执行以下操作。

  调用相关的微服务API并获得所需的数据根据前端表示格式化数据将格式化的数据发送到前端

  结果,前端将存在最小的逻辑。因此,BFF有助于简化数据表示,并占用为前端提供富裕的接口的责任。

  BFF的作用

  正如我们已经探索的那样,BFF充当前端和微服务之间的简单界面。理想情况下,前端团队也将负责管理BFF。

  单个BFF专注于单个UI,仅限UI。因此,它将有助于我们通过其后端保持始终简单地看到数据的统一视图。

  这带来了下一个问题。我们可以为多个UI有多个BFF吗?我们将在本文的后一段中回答此问题。继续阅读。

  这会增加延迟吗?

  现在我们知道,BFF类似于客户端和其他外部API,服务等之间的代理服务器。如果请求必须通过另一个组件,它肯定会增加延迟。但是,与浏览器的高资源使用相比,BFF延迟可以忽略不计,如果需要使用未针对前端优化的多个服务。

  构建BFF允许您智能地对其他后端/微服务进行批量调用并一次返回数据,或者通过转换和格式化数据来返回更方便地表示。

  这对于2G或3G网络上的移动客户端非常有用,其中可能需要几秒钟(或更多)以建立连接。

  何时为您的应用程序使用BFF

  与许多其他模式一样,使用应用程序中的BFF取决于您计划遵循的上下文和架构。例如,如果您的应用程序是一个简单的单片应用程序,则不需要BFF。它不会增加没有价值。

  但是,如果您的应用程序取决于微服务并消耗许多外部API和其他服务,最好使用BFF来简化数据流并向您的应用引入大量效率。

  此外,如果您的应用程序需要为特定前端接口开发优化的后端,或者您的客户端需要使用在后端中需要大量聚合的数据,BFF是合适的选项。

  提示:分布式设计需要不同类型的代码协作。使用位(github)在可以在Repos共享并独立开发的各个组件上进行协作。

  保持存储库可扩展,可维护,始终同步。

  我们可以有多个bffs吗?

  我们当然可以!这是拥有BFF的全部点。

  传统方法(没有BFF的应用程序)将仅为所有客户端拥有一个API网关。它将如下所示。

  > Source

  但是,拥有BFF的目的是为您的客户提供连接的聚焦界面。例如,移动UI的数据消耗可能与浏览器的数据消耗不同。在这种情况下,为了更好的数据表示,可以使用两个BFF。

  > Source

  正如您所看到的,每个客户端都在这里有一个bff。它将有助于优化服务的响应(SA,SB … SN)。

  拥有BFF的优点

  关注的分离 - 前端要求将与后端问题分开。这更容易维护。更容易维护和修改API - 客户端应用程序将少了解您的APIS结构,这将使其更有弹性更具弹性。前端的更好的错误处理 - 服务器错误大部分时间都没有毫无意义。而不是直接返回错误服务器发送,而BFF可以映射需要向用户显示的错误。这将改善用户体验。多个设备类型可以并行调用后端 - 虽然浏览器正在向浏览器BFF提出请求,移动设备可以执行相同的操作。它将有助于更快地获得服务的回复。更好的安全性 - 可以隐藏某些敏感信息,并且在向前端发送响应时,可以省略对前端的不必要的数据。抽象将使攻击者更难瞄准应用程序。共享团队的组件所有权 - 应用程序的不同部分可以很容易地由不同的团队处理。前端团队可以享受客户的所有权及其基础资源消耗层;导致高开发速度。

  在实践中遵循的最佳实践

  到目前为止,我们看到的是惊人的!但是,BFFS是否有故障?

  答案是不!像其他技术或模式一样,甚至BFF都有陷阱。为了避免这些,我们必须遵循一些最佳实践。下面说明的一些最佳实践。

  避免使用自包含的全包API实现BFF - 您的自包含API应在微服务层中。大多数开发人员忘记了这一点并开始在BFF中实现服务级API。您应该记住,BFF是客户和服务之间的翻译。从服务API返回数据时,它的目的是将其转换为客户端应用程序指定的数据类型。避免BFF逻辑复制 - 必须注意,一个BFF应该迎合特定的用户体验,而不是设备类型。例如,大多数时候,所有移动设备(iOS,Android等)共享相同的用户体验。在这种情况下,所有这些操作系统的一个BFF都足够了。没有必要为iOS和另一个用于Android的单独BFF。避免过度依赖BFFS - BFF仅仅是一个翻译层。是的,它也为应用程序提供了一定程度的安全性。但是,你不应该比你更依赖它。无论BFF是否存在,您的API层和前端层都应处理所有功能和安全方面。因为BFF应该填充间隙,而不是向应用程序添加任何功能或服务。总结

  BFF模式不仅有助于开发,而且还有助于提高用户体验。因此,必须考虑数据优化和聚合,同时将BFF集中在其前端。

  此外,如果您之前没有使用BFF模式,则是时候开始了。让我知道你的经历和意见。

标签:服务,BFF,前端,应用程序,API,模式,客户端
来源: https://www.cnblogs.com/linjingyg/p/15790048.html