我想询问如何使用 TPL Dataflow 最好地设计最佳架构。我还没有编写代码,所以没有可以发布的示例代码。我也不是在寻找代码(除非自愿),但非常感谢设计方面的帮助:
要求如下:
我有 3 个以特定方式相互依赖的核心数据块。Datablock1 是生产 Foo1 类型对象的生产者。Datablock2 应该订阅 Foo1 对象(来自 Datablock1),并且可能(不是在每个 Foo1 上,受特定函数约束)生成 Foo2 对象,并将其存储在输出队列中以供其他数据块使用。Datablock3 还使用 Foo1 对象(来自 Datablock1)并可能生成 Foo3 对象,Datablock2 使用这些对象并转换为 Foo2 对象。
总而言之,以下是数据块以及它们各自产生和消耗的内容:
- Datablock1:生产(Foo1),消费(无)
- Datablock2:生产(Foo2),消费(Foo1,Foo3)
- Datablock3:生产(Foo3),消费(Foo1)
另一个要求是在 Datablock2 和 Datablock3 中几乎同时处理相同的 Foo1。如果 Foo1 对象首先由 Datablock2 使用,然后一旦 Datablock2 完成其工作,同样的 Foo1 对象将被发布到 Datablock3 以供其工作。Datablock2 中的 Foo2 对象可以来自对 Foo1 对象或 Foo3 对象的操作。
我希望这是有道理的,如果仍然不清楚,我很乐意解释更多。
我的第一个想法是为 3 个数据块中的每一个创建 TPL 数据流块,并让它们处理不同对象类型的传入流。另一个想法是拆分数据块,让每个数据块只处理一种对象类型的流。您有什么建议,或者是否有更好的解决方案可能有效?
Svick 已经在 Datablock1 上提供了帮助,它已经投入使用,我只是纠结于如何将我当前的环境(如上所述)转换为 TPL Dataflow。
任何想法或指针都非常感谢。