domain-driven-design - 后端 DDD 的前端
问题描述
我们有一个包含许多微服务的应用程序环境,并使用一个后端作为 UI 的前端来聚合数据。
您会将聚合逻辑(组合来自多个微服务的数据)放在前端的域或应用程序层中吗?
感觉就像业务逻辑,但是,没有持久性,只有数据检索,所以我怀疑把它放在哪里?
解决方案
Backend-for-front-end 实现不需要包含任何真实的业务逻辑,因为它们仅用作专注于特定前端客户端(移动、桌面、Web 等)的网关。
所以当然在你的 BFF 中有逻辑,但它会是聚合逻辑。负责处理前端客户端请求并管理工作流以与所涉及的微服务进行通信——无论是通过同步还是异步通信——以及聚合数据并将其返回给客户端。
您通常最终得到的是某种处理 API 请求的控制器(例如通过 REST)、一些包含聚合逻辑的服务、某种表示客户端请求和响应的贫血模型(即没有逻辑)以及类似的东西。
我不知道您使用的是什么技术堆栈,但您可以在 Microsoft 支持的 eshopOnContainers 项目中查看微服务架构中的一些示例 BFF 实现。
注意:如果您真的确定 BFF 中需要业务逻辑,我想您可能需要考虑这是否应该成为现有微服务的一部分,或者您甚至可能没有发现新的有界上下文但这个逻辑相当适合在。
推荐阅读
- ios - UITableView 与 UINavigationController Swift
- ruby-on-rails - Rails 工厂与同一个对象有多个关联
- android - 如何在每个活动的顶部放置相同的按钮?
- azure-sql-database - What is Azure SQL Database current version and which SSMS shall I use to backup database?
- javascript - react BrowserRouter resulting in "You should not use
or withRouter() outside a " - php - How to include a php file in php with condition
- android - 如何自动配对蓝牙设备
- nsis - When installing the same version of the windows installer software second time instead of silently installing it is showing the error message
- html - Ionic v4 Firebase: cannot read property 'email' of undefined
- angularjs - 如何处理angularJS动态表单中的多个复选框数据