【问题标题】:C# which pattern to use to have synchronous and pub/sub scenario for long-running taskC# 使用哪种模式来为长时间运行的任务提供同步和发布/订阅方案
【发布时间】:2019-02-12 08:21:23
【问题描述】:

假设我有一个图像处理库,我需要它以两种方式工作 - 同步和作为 pub/sub 模式。所以第一种方法ProcessBigListOfImages 在完成之前不会返回。第二种方法ProcessBigListOfImagesStart 应该会立即返回某种订阅信息(最好有进度反馈),所以它会被该进程在以后的某个地方调用。

现在,这就是我在使用本地文件系统和 Azure 计算和存储时所需要的。两个不同的平台,但任务相似。我想拥有相同的 API。这可行吗?

我可能需要再阅读一些有关设计模式的书籍来刷新我的记忆......

【问题讨论】:

    标签: c# azure design-patterns architecture


    【解决方案1】:

    对于需要立即返回的长时间运行的任务,您必须使用队列(Azure 服务总线/RabbitMQ 等)。只需将带有任务 ID 的消息放入队列中,然后返回可用于跟踪的任务 ID。

    另一方面,您的工作进程将从队列中获取任务并根据任务 ID 将其标记为完成。您可以使用 db/cache 服务来保存和跟踪您的任务 ID。您的工作进程实际上取决于您的偏好,它可以是 Web 作业、Web 服务器或无服务器。

    【讨论】:

    • 从设计的角度来看,我知道该怎么做。我现在确定如何使它在 C# 中变得更好和可用。所以我的问题更多的是关于 C# 模式。
    猜你喜欢
    • 2012-02-22
    • 2021-10-30
    • 2011-01-19
    • 2014-03-20
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多