Rest 微服务传递实体id guid或唯一代码

Rest 微服务传递实体id guid或唯一代码,rest,wcf,domain-driven-design,microservices,Rest,Wcf,Domain Driven Design,Microservices,我们有两种不同的微服务-客户服务和订单服务。客户服务存储有关客户的信息,即姓名、DOB等。订单服务将管理客户的订单,即订单号、成本等。这是向订单服务传递客户唯一参考/ID的最佳方式 解决方案1: 客户ID是客户服务中唯一的GUID。这将传递给订单服务 解决方案2: 在客户服务中生成业务/人性化的唯一代码,并将其传递给订单服务 解决方案3: 还有别的吗?我建议你做第一个选择。它与在其他上下文中使用的Id相同,这样您就不需要创建一些东西来共享引用 关于第二个问题,是否有任何背景原因导致您不共享真实I

我们有两种不同的微服务-客户服务和订单服务。客户服务存储有关客户的信息,即姓名、DOB等。订单服务将管理客户的订单,即订单号、成本等。这是向订单服务传递客户唯一参考/ID的最佳方式

解决方案1: 客户ID是客户服务中唯一的GUID。这将传递给订单服务

解决方案2: 在客户服务中生成业务/人性化的唯一代码,并将其传递给订单服务

解决方案3:
还有别的吗?

我建议你做第一个选择。它与在其他上下文中使用的Id相同,这样您就不需要创建一些东西来共享引用

关于第二个问题,是否有任何背景原因导致您不共享真实Id,而是共享生成的密钥?如果是(你对此只字不提),那么第二个更好,因为你“保护”了你不想分享的东西。这需要一种方法,在CustomerMicroservice上,从生成的密钥获取用户(如果需要)

编辑:


对于“原因”,我指的不是需要Id的操作(这可能有点奇怪),而是,例如,用户需要访问该信息以与呼叫中心进行交互。在本例中,它是一个人类可读的值,远远优于Guid

我建议你做第一个选择。它与在其他上下文中使用的Id相同,这样您就不需要创建一些东西来共享引用

关于第二个问题,是否有任何背景原因导致您不共享真实Id,而是共享生成的密钥?如果是(你对此只字不提),那么第二个更好,因为你“保护”了你不想分享的东西。这需要一种方法,在CustomerMicroservice上,从生成的密钥获取用户(如果需要)

编辑:


对于“原因”,我指的不是需要Id的操作(这可能有点奇怪),而是,例如,用户需要访问该信息以与呼叫中心进行交互。在本例中,它是一个人类可读的值,远远优于Guid

如果你使用人性化的ID,那么你需要一个由人生成并检查的过程;值得吗?可能值得使用一个包含
CustomerID
CustomerName
/
描述的值对象,以使事情稍微简单一点。YMMV@EbenRoux只要你不试图保持这些同步并将它们作为值处理。如果你使用人性化的ID,那么你需要一个由人生成并检查它们的过程;值得吗?可能值得使用一个包含
CustomerID
CustomerName
/
描述的值对象,以使事情稍微简单一点。YMMV@EbenRoux只要您不尝试保持这些同步并将它们视为值。