.net/c#のアクター同時実行モデルの適切な実装はありますか?
私は ac# ルーチンを最適化する必要があり、アクター モデルは私の問題の解決策として完全に適合すると思います。残念ながら、私はスカラ実装の経験しかありません。
.net/c#のアクター同時実行モデルの適切な実装はありますか?
私は ac# ルーチンを最適化する必要があり、アクター モデルは私の問題の解決策として完全に適合すると思います。残念ながら、私はスカラ実装の経験しかありません。
https://github.com/AsyncronIT/protoactor-dotnet
https://github.com/akkadotnet/akka.net
アクターに対する Project Orleans Microsoft のアプローチも検討することができます (先週リリースされました)。
これはプロジェクトの Web サイトです: http://research.microsoft.com/en-us/projects/orleans/
紹介としてビルド2014からの良い話もあります
Orleans を使用して Azure で Halo 4 の分散型クラウド サービスを構築する http://channel9.msdn.com/Events/Build/2014/3-641
今日投稿されたダウンロード用のビットは CTP であることに注意してください。
Orleans の紹介: http://felixnotes.com/orleans-microsofts-take-on-the-actor-pattern-in-net/
はい、それもオープンソースでした: https://github.com/dotnet/orleans
Robotic Studioの一部であるMS Concurrency & Coordination Runtime (CCR)とDecentralized Software Services (DSS)を確認してください。
これらのフレームワークを使用すると、アクター アプローチの要件のほとんどを満たす疎結合サービスを開発できます。
Axum が最適ですが、残念ながら、まだ何らかのアルファ/ベータ段階にあります (UPDATE は 2011 年 2 月に廃止されました)。私はそれを研究に使用していますが、全体的な方向性は素晴らしく、大きな可能性を秘めていると言わざるを得ません.
C# ではなく C++ は Microsoft のAsynchronous Agents Libraryであり、必要なすべての機能を提供します。
.NET 4 のParallel 関連の機能をよく見てください。
それが役に立てば幸い!
.Net 上のアクター ライブラリ。非常に有能で、十分にテストされています。TopShelf、MassTransit、および NServiceBus.Host の基盤。
https://github.com/phatboyg/stact
抽象化が含まれています:
今後:
クリスによる執筆時点で積極的に開発されています。
並行アプリケーションの開発には、現在のソフトウェア開発方法から逸脱したアプローチ、つまり自律システム コンポーネント間の並行性と通信を重視するアプローチが必要です。アクター モデルは、アクターと呼ばれるソフトウェア コンポーネントのシステムを定義します。アクターは、メッセージを交換することによって (オブジェクト指向設計のインターフェイスでメソッドを呼び出す代わりに) 相互に対話し、(制御ではなく) データがコンポーネントを介してやり取りするシステムを生成します。システムの機能要件。
Stact は、.NET でアクター モデルを使用してアプリケーションを構築するためのライブラリです。メイン アセンブリである Stact.dll はアクター ライブラリであり、あらゆる種類のアプリケーションでアクター モデルを使用するために必要なものがすべて含まれています。Stact.ServerFramework などの追加のサポート フレームワークもあり、ソケットまたは HTTP を介してアクターを公開するために使用でき、アクターを使用してサービスを構築できます。
NActは、非常に使いやすいアプローチをとる .NET 用のアクター フレームワークです。(免責事項:私が書きました)
2 つのアクター間で受け渡されるメッセージは、2 つのオブジェクト間の単なるメソッド呼び出しです。すべてのメソッド引数が不変であり、スレッドセーフであることを確認する必要があります。
スレッドの切り替えを処理するプロキシでオブジェクトをラップすることで機能します。すべての通常の .NET 機能、特にイベントは正しく処理されるため、通常のコードを記述でき、スレッド マーシャリングが自動的に行われます。
C# 5 async/await をサポートするブランチもあります。
本日、Microsoft は、この図によると、アクター プログラミング モデルを実装する Azure Service Fabric を発表しました。

発表を参照してください: http://azure.microsoft.com/blog/2015/04/20/announce-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/
更新: SDKが利用可能になり、ビデオ チュートリアルもあります。
C# の実装については知りませんが、Microsoft の Actor モデルに基づくまったく新しいプログラミング言語があります。それはAxumと呼ばれます:
Axum(以前のコードネームMaestroは ) は、アクター モデルに基づいて、Microsoft によって開発されたドメイン固有の同時実行プログラミング言語です。これは、C に似た構文を使用する .NET 共通言語ランタイムに基づくオブジェクト指向言語であり、ドメイン固有言語であり、同時実行に適したソフトウェア アプリケーションの一部の開発を目的としています。ただし、並行コンポーネントの順次部分のために汎用プログラミング言語 (C# など) に切り替える必要がない、十分な汎用コンストラクトが含まれています。
PostSharpアクターも検討する必要があります
Remact.Netは私の現在のプロジェクトです。リモートアクターメッセージングにWebSocketとJsonを使用します。C#アクターの型安全性がありますが、Javaスクリプトで記述されたブラウザーベースのアクターの動的型もサポートしています。
私の以前のプロジェクトはAsyncWcfLibでした。これは、プロセス内または異なるアプリケーション間で通信するアクター用のC#ライブラリです。リモートメッセージパッシングはWCFを使用します。
アクターカタログサービスは、複数のホストでアクターの検出を可能にします。ホストはWindowsまたはLinuxを実行できます。
既に述べたように、F# の MailboxProcessor クラスは、アクター モデルのシンプルで直接的な実装を提供します。それを使用する方法についてのすばらしい紹介は、ここで入手できます。F# は C# と非常にうまく相互運用でき、さまざまなメッセージを送信するメソッドを使用してエージェントをクラスにまとめることができます。エージェントが非同期応答で応答する場合については、PostAndAsyncReplyメソッドを参照してください。これにより、 Async.StartAsTaskメソッドを使用して C# で待機できるタスクに変換できる非同期ワークフローが返されます。
最後に、アクターをリモートで配布する必要がある場合は、C# と F# の両方の API を提供するAkka.NETを確認することをお勧めします。
この質問に気づき、新しいデータ ポイントを追加することを考えました。Microsoft は現在、 ActorFXと呼ばれるこのための半公式プロジェクトを持っています。オープンソースであり、まだ進化していますが、注目する価値があります...