【问题标题】:Data pull and push数据拉取和推送
【发布时间】:2016-11-27 03:20:38
【问题描述】:

我正在编写一个 .NET 窗口服务,它以一定的时间间隔安排作业。我正在使用 QUARTZ 进行调度。一项工作将完成 2 个任务:

  1. 使用某些 SDK 从一个数据源中提取数据。
  2. 使用 REST API 将检索到的数据推送到其他数据源。

拉取数据很耗时,我会分块拉取并推送。

我的问题主要是关于位于推和拉之间的组件的设计方面。当有东西可以推送时,我想通知推送组件。

观察员,请让我知道关于作业队列的意见吗?

【问题讨论】:

    标签: .net c#-4.0 observer-pattern job-scheduling


    【解决方案1】:

    我会使用 hexagonal 方法。详情:

    • Quartz 作业将是一个将工作完全委托给专用用例对象的对象(例如NotifyExtractedData,也许你能想到一个更好的名字...... ) 以避免 Quartz 细节与您的业务逻辑之间的耦合;
    • NotifyExtractedData 对象将取决于代表 hexagon端口 的两个接口:可能是 IDataGateway INotifationGateway
    • IDataGateway 可以有一个方法Chunk GetChunk(); 这个接口的实现可以是一个代表 SDK 的 hexagon 适配器的对象:SDKDataGateway。在这个对象中,我将使用 SDK 放置数据提取的所有逻辑。 Chunk 将是一个 DTO,其中包含您提取的数据块;
    • INotificationGateway 接口可以有一个方法void Notify(Chunk chunck); 来接收数据网关提取的数据块。 INotificationGateway 接口的实现可以是一个对象 RESTNotificationGateway,其中包含有关通知数据所需的 REST API 的所有详细信息。

    这只是一个可能的解决方案的原始想法。这些名字肯定可以改进。希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多