首页 > 解决方案 > 后端 DDD 的前端

问题描述

我们有一个包含许多微服务的应用程序环境,并使用一个后端作为 UI 的前端来聚合数据。

您会将聚合逻辑(组合来自多个微服务的数据)放在前端的域或应用程序层中吗?

感觉就像业务逻辑,但是,没有持久性,只有数据检索,所以我怀疑把它放在哪里?

标签: domain-driven-design

解决方案


Backend-for-front-end 实现不需要包含任何真实的业务逻辑,因为它们仅用作专注于特定前端客户端(移动、桌面、Web 等)的网关。

所以当然在你的 BFF 中有逻辑,但它会是聚合逻辑。负责处理前端客户端请求并管理工作流以与所涉及的微服务进行通信——无论是通过同步还是异步通信——以及聚合数据并将其返回给客户端。

您通常最终得到的是某种处理 API 请求的控制器(例如通过 REST)、一些包含聚合逻辑的服务、某种表示客户端请求和响应的贫血模型(即没有逻辑)以及类似的东西。

我不知道您使用的是什么技术堆栈,但您可以在 Microsoft 支持的 eshopOnContainers 项目中查看微服务架构中的一些示例 BFF 实现。

注意:如果您真的确定 BFF 中需要业务逻辑,我想您可能需要考虑这是否应该成为现有微服务的一部分,或者您甚至可能没有发现新的有界上下文但这个逻辑相当适合在。


推荐阅读