首页 > 解决方案 > 使用微服务处理子数据

问题描述

我正在尝试找出在新项目中组织代码的最佳方式。我正在采用带有 .NET Core API 和 Angular UI 的微服务方法。

我需要围绕以下示例进行思考:

我有一个父级实体,发票。我的数据库中有一个 Invoices 表,我正在 API 中构建一个 Invoices 服务来处理 CRUD。

每张发票都与 InvoiceDetails 具有一对多的关系,后者提供了有关发票的更深层次的信息。

我计划将 InvoiceDetails CRUD 保留在上面列出的相同 InvoicesService 中,因为在我的脑海中,这一切都归结为该服务。

这看起来很简单,但我在 UI 方面感到很困惑。当我创建发票时,我还需要创建 InvoiceDetails。我应该调用 API 来创建发票,然后在返回时再调用一次来创建 InvoiceDetails,还是应该在一个调用中处理所有这些?

有没有更好的方法让我考虑这个问题?我试图尽可能地分离关注点,所以似乎应该有一个用于处理 CRUD 的发票 API 控制器和一个用于 InvoiceDetails 的单独控制器。

标签: angularrest.net-corearchitecturemicroservices

解决方案


从领域驱动设计的角度来看,这将取决于您的业务领域中的实体/聚合是什么。目前,InvoiceDetails 听起来像是一个不需要自己标识的 Value 对象,这表明它不需要自己的 CRUD Web API。

看待这个问题的一种方法是问自己让 InvoiceDetails 单独存在是否有意义。在不绑定任何发票的情况下创建 InvoiceDetails 是否有意义?如果是,那么最好有一个单独的 API 端点来管理 InvoiceDetails 资源。如果不是,那么为 InvoiceDetails 创建另一个端点的理由是什么?


推荐阅读