数据拉动和推送

时间:2016-11-27 03:20:38

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

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

  1. 从一个数据源使用某些SDK提取数据。
  2. 使用REST API将检索到的数据推送到其他数据源。
  3. 拉取数据非常耗时,我会拉出块并推送数据。

    我的问题主要在设计方面,介于推拉之间。当有东西可用于推送时,我想通知push组件。

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

1 个答案:

答案 0 :(得分:0)

我会使用 hexagonal 方法。详情:

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

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