图片上传 - 使用 CQRS 和 DDD 放置代码的位置

Posted

技术标签:

【中文标题】图片上传 - 使用 CQRS 和 DDD 放置代码的位置【英文标题】:Image upload - Where to put code using CQRS and DDD 【发布时间】:2020-01-10 02:02:11 【问题描述】:

我想知道使用 DDD 和 CQRS 上传文件的最佳方式。我想将图像保存在我的文件中,并将名称保存在数据库中。

PS:我知道 DDD 不是多层项目。

这是我的例子:

客户 (ID、姓名、电子邮件、图片(只有一个))

我不是要求代码保存图像。但是在哪里调用保存图像方法。

在控制器中,我有一个包含这些字段的 CustomerViewModel。之后,我调用我的应用层,使用 CustomerAppService,然后是命令……等等……

在文件夹中保存图片的方法在我的基础设施层。

我应该在 Controller 中调用保存在文件夹中的方法吗?在申请中?在 CommandHandler 中?

【问题讨论】:

【参考方案1】:

根据我的经验,我解决了如下问题:

    创建端点(控制器操作)以生成用于将文件直接上传到存储的临时链接(我们使用 AWS S3,它提供了创建预签名 url 的能力) 客户端通过url上传文件 客户端将带有元数据的确认请求发送到另一个端点(控制器操作)

【讨论】:

【参考方案2】:

您可以将图像保存在控制器中并保留对已保存文件的引用,例如路径、数据库中记录的 ID、S3 存储桶地址等。该引用是您将在命令中传递的内容,并将保存在客户记录中。

【讨论】:

以上是关于图片上传 - 使用 CQRS 和 DDD 放置代码的位置的主要内容,如果未能解决你的问题,请参考以下文章

我应该将使用 DDD 和 CQRS 方式刷新访问令牌的代码放在哪里?

DDD CQRS架构和传统架构的优缺点比较

DDD-CQRS的落地案例

DDD-CQRS能解什么问题

CQRS框架(nodejs的DDD开发落地框架)初识感想

DDD领域驱动设计:CQRS架构模式