【发布时间】:2017-11-05 17:41:58
【问题描述】:
我正在学习使用 DDD、CQRS 和 ES 开发微服务。它是 HTTP RESTful 服务。微服务是关于在线商店的。有几个域,如产品、订单、供应商、客户等。域构建在单独的服务中。如果命令有效负载与其他域相关,如何进行验证?
例如,这里是订单服务(命令端)中的 addOrderItemCommand 负载。
{
"customerId": "CUST111",
"productId": "SKU222",
"orderId":"SO333"
}
如何验证上面的命令?如何知道客户确实存在于数据库中(查询端客户服务)并且仍然处于活动状态?如何知道产品存在于数据库中并发布了产品的状态?如何知道客户是否有资格获得相关产品的促销价格?
是否可以直接调用 API(如点对点 / ajax / 请求承诺)来验证这个有效载荷以便命令端服务?但我认为,如果只是为了验证而直接调用 API,性能会变得更差。因为,我们在命令服务之外开发了一个事件处理器,它监听事件并将事件应用到实体化视图。
谢谢。
【问题讨论】:
-
如果不验证其他域的参数,企业的成本是多少?
标签: validation domain-driven-design microservices cqrs