async f#vs. CCRフレームワーク
-
04-10-2019 - |
質問
CCRについて読んだ後: http://www.infoq.com/news/2008/12/ccr f#asyncブロックとまったく同じであるという印象がありますか?
「let!」と同じことを行うために、port.receiveおよびport.testを獲得します。
これは正しいです?そして、CCRのf#asyncで得られない利点はありますか?
解決
あなたが言及した記事の例は本当にように見えます let!
非同期ワークフローから。一般に、 yield return
C#のキーワードは、F#計算式と同様のパターンをエンコードすることを可能にします(列挙者の作成用に設計されたため、奇妙な方法で):
CCRとF#の非同期ワークフローの重要な違いは、CCRにもメッセージパスの並行性のライブラリが含まれていることだと思います。たとえば、参照してください この記事 - それは使用しています Port
クラス(ポートにメッセージを送信できます)と Arbiter.Receive
, 、これはあなたがからのメッセージを待つことを可能にする原始的です Port
.
F#で使用できます MailboxProcessor
同じメッセージパスコミュニケーションパターンを実装するためには、これはF#非同期ワークフローの組み込みの部分ではありません - MailboxProcessor
実装されています 使用 非同期ワークフロー。
要約すれば: :F#非同期ワークフローはよりシンプルで概念的に明確だと思います。ただし、CCRおよび非同期ワークフロー 一緒 と MailboxProcessor
ほぼ同じプログラミングパターンを実装します。
所属していません StackOverflow