C#的Actors有什么好的实现?

Bor*_*rba 71 .net c# concurrency actor

.net/c#的actor并发模型有没有很好的实现?

我必须优化ac#例程,我认为演员模型非常适合作为我的问题的解决方案.不幸的是,我只有scala实现经验.

Rog*_*son 52

.NET Actor模型框架:

Proto.Actor

  • 演员
  • 虚拟演员

https://github.com/AsynkronIT/protoactor-dotnet

Akka.NET

  • 演员

https://github.com/akkadotnet/akka.net

微软奥尔良

  • 虚拟演员

https://github.com/dotnet/orleans


sil*_*ter 24

人们也可以看一下关于演员的Project Orleans Microsofts方法(上周发布)

这是项目网站:http: //research.microsoft.com/en-us/projects/orleans/

这也是2014年版本作为介绍的好话

使用Orleans在Azure中构建Halo 4的分布式云服务 http://channel9.msdn.com/Events/Build/2014/3-641

请注意,今天发布的下载位是CTP.

奥尔良简介:http://felixnotes.com/orleans-microsofts-take-on-the-actor-pattern-in-net/

是的,它也是开源的:https://github.com/dotnet/orleans

  • 我认为它最好与Azure一起运行(因为它来自Microsoft),但不一定需要,但不能100%确定。 (2认同)

ale*_*x25 22

您应该看一下MS Concurrency&Coordination Runtime(CCR)分散软件服务(DSS),它是Robotic Studio的一部分.

这些框架将允许您开发松散耦合的服务,以满足大多数演员方法的要求.

Axum将是最合适的,不幸的是它仍处于某种alpha/beta阶段(更新它已于2011年2月被杀死).我用它进行研究,必须说总体方向很好,而且潜力巨大.

不是C#,而C++是Microsoft的异步代理库,它为您提供所需的所有功能.

仔细研究.NET 4的并行相关功能.

希望能帮助到你!

  • 我在这里找到了这个:http://code.google.com/p/retlang/ (6认同)

Hen*_*rik 18

Stact

.Net上的actor-lib.相当称职和经过充分测试.TopShelf,MassTransit和NServiceBus.Host的基础.

https://github.com/phatboyg/stact

包含抽象:

  • 工作流,允许定义和执行复杂的状态驱动协议
  • 通道,支持对象之间的消息传递
  • 演员,无论是打字还是匿名
  • 纤维,一种合作的线程模型
  • 路由
  • 请求/应答
  • 调度程序

即将开始的:

  • 适当的主管层次结构

克里斯在写作时积极发展.

概述:

开发并发应用程序需要一种不同于当前软件开发方法的方法,这种方法强调自治系统组件之间的并发和通信.actor模型定义了一个名为actors的软件组件系统,它们通过交换消息(而不是在面向对象的设计中调用接口上的方法)相互交互,从而产生一个系统,其中数据(而不是控制)流经组件以满足系统的功能要求.

Stact是一个用于在.NET中使用actor模型构建应用程序的库.主程序集Stact.dll是actor库,包含在任何类型的应用程序中使用actor模型所需的所有内容.还有其他支持框架,例如Stact.ServerFramework,可用于通过套接字或HTTP公开actor,允许使用actor构建服务.


小智 13

NAct是.NET的一个actor框架,它采用了一种非常易于使用的方法.(免责声明:我写的)

两个actor之间传递的消息只是两个对象之间的方法调用.您必须确保所有方法参数都是不可变的,并且它将是线程安全的.

它的工作原理是将对象包装在处理线程切换的代理中.所有正常的.NET功能,特别是事件,都可以正确处理,因此您可以编写正常的代码,并且线程编组将自行完成.

甚至还有一个支持C#5异步/等待的分支.


Ant*_*lev 5

我不知道 C# 的任何实现,但是 Microsoft 有一种基于 Actor 模型的全新编程语言。它被称为阿克苏姆

Axum(以前的代号为Maestro)是一种特定于领域的并发编程语言,基于 Actor 模型,由 Microsoft 开发。它是一种基于 .NET 公共语言运行时的面向对象语言,使用类似 C 的语法,作为一种特定于领域的语言,旨在开发非常适合并发的软件应用程序部分。但它包含足够多的通用结构,因此无需为并发组件的顺序部分切换到通用编程语言(如 C#)。

  • 不幸的是该项目已被 MS 终止 (3认同)

小智 5

今天微软宣布Azure Service Fabric,根据这张图片,实现了一个actor编程模型:

Azure Service Fabric

请参阅公告:http://azure.microsoft.com/blog/2015/04/20/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/

更新:SDK现已推出,还有一个视频教程.