TPL 数据流和 Akka.net 有什么区别?

What is the difference between TPL dataflow and Akka.net?

我使用过 TPL 数据流。真的很喜欢它。我从我的 java/scala 朋友那里多次听到 Akka 这个词,所以我试着阅读它并发现 akka 也有一个 .net 端口。伟大的。当我继续阅读什么是 akka 时,我惊讶地发现它听起来和 TPL 数据流一模一样。

那么回到我的问题,TPL 数据流和 Akka.net 之间有什么区别?

什么时候选择什么?

Akka 是一个基于 actor 的模型,TPL Dataflow 也是。由于后者被描述为 "This dataflow model promotes actor-based programming by providing in-process message passing for coarse-grained dataflow and pipelining tasks." 我认为应该强调 in-process,因为 Akka 允许您创建远程参与者,它们不一定驻留在同一进程中。

我发现了一个有趣的信息,与 Akka.NET 和 TPL Dataflow 的比较有关,它们都是基于 actor 的:

http://blog.i3arnon.com/2016/05/23/tpl-dataflow/

For actor model have you checked out Akka.net? It is a port of the Akka framework from Java\Scala that seems to have built up a pretty strong community. Just curious how TPL Dataflow compares?

I've actually talked about it with one of the owners, Aaron Stannard, at .NET Fringe. He said their initial implementation actually used TPL Dataflow underneath. I think TPL Dataflow is more of a library while AKKA.NET is a framework. TPL Dataflow is for in-process pipelines while AKKA is a distributed system infrastructure though they share the same mindset.

Aaron 是 Petabridge 的联合创始人兼 CTO,也是 Akka.NET 开源项目的联合创始人。