图片上传 - 使用 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 放置代码的位置的主要内容,如果未能解决你的问题,请参考以下文章