【问题标题】:How to add scheduled jobs in domain driven design如何在领域驱动设计中添加计划作业
【发布时间】:2017-12-29 23:22:10
【问题描述】:

我应该在领域驱动设计架构中添加调度程序项目的哪一层?

我正在考虑在分布式服务层中添加调度程序,在应用服务层中添加业务登录。

这是我正在考虑的解决方案设计:

  • 表示层

    • UI 项目
  • 分发服务层

    • 应用程序 API
    • 调度器
  • 应用层

    • 应用程序(应用程序 API 和调度程序逻辑的应用程序服务)
    • DTO
  • 领域实体模型

    • 项目域(特定于项目的域实体)
    • 调度程序域(特定于调度程序的域实体)
  • 数据持久性

    • 数据访问项目(存储库)
    • 数据访问调度程序域(存储库)
  • 横切基础设施

    • 授权
    • 日志记录

感谢任何帮助。

【问题讨论】:

  • 我看到你的帖子我有类似的需求,你为什么要为调度程序创建一个单独的域项目?

标签: domain-driven-design scheduler


【解决方案1】:

从现在开始,我在Presentation layer 中实现了这种组件,与UI 处于同一级别。这些组件由 cronjobs 定期唤醒,然后它们调用Application services 以便向Aggregates 发送命令。然后,Aggregates(如有必要且允许)执行对系统状态的更改。

【讨论】:

  • 感谢康斯坦丁的回复。在我的项目中,我正在处理两个不同的数据库——一个是主数据库(特定于应用程序),另一个是调度程序。所以我的问题是我们是否可以有两个域模型项目(一个用于应用程序 DB,另一个用于 Scheduler),它们将拥有自己的数据持久性项目。这是好习惯吗?提前感谢您的帮助
  • 另外我在另一篇文章 (stackoverflow.com/questions/3912823/…) 中读到,调度程序可以在单独的基础设施项目中实现,以后可以作为外部实体添加。哪一个是好的做法?
  • 我读过它,它给出了和我一样的答案。也许你还有其他问题,比如如何组织项目,因为在这里你问这个“我应该在领域驱动设计架构中添加调度程序项目的哪一层?”我的回答是:“在表示层”
  • 非常感谢康斯坦丁。
  • 我有同样的问题,并想把它放在应用程序层,.. 然而,这是有道理的,因为 cronjob 实际上是“自动化用户”,它会定期调用应用程序中的一些操作。 . 而且,同样的动作可能应该由真实用户手动调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 2011-05-29
相关资源
最近更新 更多