使用微服务期间的步骤向导 UI
Step wizard UI during using Microservices
我有一个包含 customer
实体和 user
实体的系统。
Customer
是出钱的人。每个客户包含 1-N 个用户。客户有指向用户的链接。
User
不能没有客户。用户实体包含 CustomerId。
问题是我只能使用特定的 UI 来创建客户。客户创建过程包括 UI 中的 2 个步骤:
- 填写客户信息:名字、姓氏、地址等
- 第二步为客户创建用户。
主要思想是在第 2 步结束时创建客户和用户。如果我可以将这两个实体存储在同一个数据库中,那将很简单。我可以在一次 ACID 事务中完成。它会拯救一切或一无所有。
不幸的是我使用微服务——客户和用户是不同的微服务,有自己的存储。而且这两个存储都不是数据库——存储没有事务选项。所以 Customer
实体使用存储 1,User
实体使用存储 2。
我建议在第一步之后保存客户。然后在第二步之后保存用户。但是在第二个 UI 步骤有一个取消按钮,它应该删除在整个过程中创建的所有用户和客户。建议被拒绝了。
问题是,如果具有特定用户名的用户已经存在,我不应该保存客户,也不应该保存用户。
我的问题是:
- 我有多少个 RootAgregate?一两个?
- 将用户存储在与客户存储不同的存储中是否是正确的方法?
- 在这种情况下,正确的做法是什么?
P.S。我不喜欢将用户保存在客户内部的想法。如果更改用户,我需要与客户合作。另一个问题是我需要用户在整个系统中是唯一的,并且需要获取所有用户的列表。
P.S。我使用 Azure Service Fabric 和 Actors 模型。
How many RootAgregates do I have? One or two?
- 你有一个聚合根和一个实体。
Is it a correct approach to store Users in different storage than
Customers storage?
- 不,不是。因为每个聚合应该有一个存储库。
查看 Effective Aggregate Design by Vaughn Vernon 了解如何设计聚合。
我有一个包含 customer
实体和 user
实体的系统。
Customer
是出钱的人。每个客户包含 1-N 个用户。客户有指向用户的链接。
User
不能没有客户。用户实体包含 CustomerId。
问题是我只能使用特定的 UI 来创建客户。客户创建过程包括 UI 中的 2 个步骤:
- 填写客户信息:名字、姓氏、地址等
- 第二步为客户创建用户。
主要思想是在第 2 步结束时创建客户和用户。如果我可以将这两个实体存储在同一个数据库中,那将很简单。我可以在一次 ACID 事务中完成。它会拯救一切或一无所有。
不幸的是我使用微服务——客户和用户是不同的微服务,有自己的存储。而且这两个存储都不是数据库——存储没有事务选项。所以 Customer
实体使用存储 1,User
实体使用存储 2。
我建议在第一步之后保存客户。然后在第二步之后保存用户。但是在第二个 UI 步骤有一个取消按钮,它应该删除在整个过程中创建的所有用户和客户。建议被拒绝了。 问题是,如果具有特定用户名的用户已经存在,我不应该保存客户,也不应该保存用户。
我的问题是:
- 我有多少个 RootAgregate?一两个?
- 将用户存储在与客户存储不同的存储中是否是正确的方法?
- 在这种情况下,正确的做法是什么?
P.S。我不喜欢将用户保存在客户内部的想法。如果更改用户,我需要与客户合作。另一个问题是我需要用户在整个系统中是唯一的,并且需要获取所有用户的列表。
P.S。我使用 Azure Service Fabric 和 Actors 模型。
How many RootAgregates do I have? One or two?
- 你有一个聚合根和一个实体。
Is it a correct approach to store Users in different storage than Customers storage?
- 不,不是。因为每个聚合应该有一个存储库。
查看 Effective Aggregate Design by Vaughn Vernon 了解如何设计聚合。