【问题标题】:Where do I keep logic for file upload and calculations in onion architecture?我在哪里保留洋葱架构中文件上传和计算的逻辑?
【发布时间】:2017-07-13 02:57:51
【问题描述】:

所以.. 我最近在研究洋葱架构,也阅读了很多关于它的内容,这是大多数博客文章/指南/等的唯一内容。没有解释的是,我在哪里保留诸如上传图像或一些计算之类的逻辑?

现在我得到了类似的东西

-app.core

-app.infrastructure app.core 存储库,也有服务,包含 IoC 模块和映射器设置

-app.application app.infrastructure 调用服务并取回 DTO 模型

那么..我把这两件事放在哪里?因为我觉得洋葱所做的就是添加、更新、删除、获取、获取全部

我在哪里保存更复杂的代码......比如文件上传?暂停

【问题讨论】:

    标签: c# asp.net-mvc architecture onion-architecture


    【解决方案1】:

    您的域(或核心)不必是无逻辑的。事实上,我会说您的业务逻辑应该在您的域中,因为您的业务逻辑是您的应用程序的核心。这才是真正赋予您商业价值的东西。我会把这个逻辑放在那里。在编写该逻辑时,您可能会注意到需要某些基础架构调用才能保存到文件系统或发送电子邮件。然后,您只需将接口添加到您的核心,并假设它将由外层实现(并注入)。

    【讨论】:

    • 所以您认为制作 IPhotoSaverService 之类的东西并在 app.core 中创建一个存储库(例如 IPhotoSaverRepository)而不是让我们说进行数据库调用它将图像保存到目录是一个好主意吗?
    • 明确地说,接口应该在核心中。实际的实现不应该
    • 是的,我所有的核心接口实现都放在基础设施层。那么,在 PhotoSaverRepository 中保存文件是个好主意吗?感谢您的帮助@_ @
    • 是的,这对我来说很有意义,假设 PhotoSaverRepository 是您基础设施层中的一个类,并且它正在实现您的核心库中定义的 IPhotoSaverRepository 接口。
    • 是的,直到现在我都是这样。就像所有操作都基于那些基本的添加/删除/删除/获取,然后当我发现要实现文件上传时,我就像“我到底应该在哪里做那件事?”
    【解决方案2】:

    如果这个功能在层之间共享,我会把它放在 app.core 中

    【讨论】:

    • 但是核心层不应该是无逻辑的吗?我可能错了@_ @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2011-10-09
    • 1970-01-01
    • 2016-12-28
    • 2015-02-23
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多