【问题标题】:IHM comunication with Api for CQRS+ESIHM 与 CQRS+ES 的 Api 通信
【发布时间】:2020-11-25 22:49:33
【问题描述】:

我开始使用 CQRS/ES 开发一个新项目。据我了解,一个命令引发了一个新事件。因此,我开发了一个 web api,其中一个操作映射到一个命令。

api动作列表:

    [Route("api/user/create"), HttpPost]
    public Task<IActionResult> Handle(Commands.Create command)
    => HandleCommand(command);

    [Route("api/user/update/name"), HttpPost]
    public Task<IActionResult> Handle(Commands.UpdateName command)
    => HandleCommand(command);

在我使用 Blazor 开发的 IHM 项目中,如何与 web api 进行通信? Foreach 文本框中的更改,我发送一个 http 帖子? 这并不是一个真正的最佳解决方案。

我更喜欢添加一个提交按钮并发送一个 http 帖子。对于此解决方案,我如何将用户的所有操作传达给 web api?

【问题讨论】:

    标签: c# cqrs event-sourcing


    【解决方案1】:

    我强烈建议您看一下 DDD 之类的概念。您要做的第一件事就是清楚地了解您的域。

    假设您正在开发产品库存系统。在您的 Blazor 应用程序中,您可能有一个“创建产品”页面,其中包含一个包含所有相关字段(例如“标题”、“描述”、“价格”等)的表单。

    后端将公开一个 POST 端点 /products 接受 CreateProductDTO(如果不确定,请检查 DTO 是什么)。然后将 DTO 映射到一个不可变的命令,然后将其发送到相关的处理程序。

    我们的想法不是将每一个用户交互发送到服务器。您必须为您的域公开的可能操作绘制一张地图,然后逐步进行。

    【讨论】:

    • 感谢大卫·吉达。看了很多文档,终于明白前端一定要用Task-base UI。开始开发 CQRS+ES 确实很困难,但也是一个很大的挑战。
    • 很高兴它有帮助。如果您需要更多信息,我的博客上有几篇关于 ES+CQRS 的文章可能会有所帮助:davideguida.com/…
    猜你喜欢
    • 2018-09-05
    • 2018-06-24
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多