【问题标题】:Data pull and push数据拉取和推送
【发布时间】:2016-11-27 03:20:38
【问题描述】:
我正在编写一个 .NET 窗口服务,它以一定的时间间隔安排作业。我正在使用 QUARTZ 进行调度。一项工作将完成 2 个任务:
- 使用某些 SDK 从一个数据源中提取数据。
- 使用 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 的所有详细信息。
这只是一个可能的解决方案的原始想法。这些名字肯定可以改进。希望对你有帮助。