2012-04-16 10 views
26

私はPlay 2.0 Frameworkを学び始めました。私が理解できないことの1つは、play tutorialに記載されているIteratee、EnumeratorおよびEnumerateeパターンです。私は関数型言語での経験はほとんどありません。Play 2.0のIteratee、Enumerator、Enumerateeを理解できません

このパターンは何を達成していますか?

ノンブロッキング/リアクティブコードの書き込みにはどのように役立ちますか?

いくつかの簡単な例が役立ちます。

+0

Playのクリエイターからも新しいプレゼンテーションがあります。おそらくすべてのあなたの質問に答えるでしょう。 http://www.infoq.com/presentations/Play-I-ll-See-Your-Async-and-Raise-You-Reactive – biesior

+0

ここには[ブログの投稿](http://apocalisp.wordpress.com/2010)があります。/10/17/scalaz-tutorial-enumeration-based-io-with-iteratees /)を参照してください。 Josh Suerethには、彼らについてのブログ記事があります:http://jsuereth.com/scala/2012/02/29/iteratees.html –

+0

そして[正常な人間のためのPlay2 Iterateesの理解](http:// mandubian。com/2012/08/27/understanding-play2-iteratees-for-normal-humans /) –

答えて

19

playframework 2.0のダウンロードにはいくつかのサンプルが付属しています。 2つはIteratee/Cometの例です。例えば、彗星、クロックsample appショー:チャンクでクライアントに結果を送ります

Ok.stream(clock &> Comet(callback = "parent.clockChanged")) 

lazy val clock = Enumerator.fromCallback {() => 
    Promise.timeout(Some(dateFormat.format(new Date)), 100 milliseconds) 
} 

次に、それをこのように使用されます。 Enumeratorオブジェクトは、fromFile,fromStreamjava.io.InputStreamのように)ユーティリティ列挙関数も持っています。

私はこれがどこで行われたのかわかりませんが、このチャンク処理がスレッドを縛っていないという前提があります。いくつかのベンチマークを見ることは非常に面白いでしょう。処理されるデータや計算がさまざまなオブジェクトにラップされるため、イテレートの実装にはオーバーヘッドがあります。

列挙子から供給されるデータは、処理するデータがさらにあるか、またはデータが最後に達したことを示すことができるようにラップされます(EOF)。 iterateesの処理結果もラップされ、ある入力で結果が計算されたかどうか、または結果を計算するためにはさらに多くの入力が必要かどうかを示すことができます。私はJohn De Goesのnescala presentationにフォールドからイテラテスへの進化を示すことをお勧めします。編集:Brendan McAdamsは、非同期と非ブロッキングの素晴らしいScala Days 2012 presentationを持っています。プレゼンテーションの終わり(〜26分)ではiterateesに触れ、非同期スタイルでデータベースカーソルスタイルIOを処理するのに役立ちます。

Iterateesの1つの宣伝された利点はそれらが構成するということです。ここでは、彼らが構成するいくつかの方法があります:あなたがenumator andThenを養うことができ

  • することができますマップU
  • の列挙子を取得するTの列挙子を超える種類(T) => Uの機能あなたはインターリーブ 2つの列挙子
  • iterateeは別のiterateeによって消費されるいくつかの入力を残すことができます
+0

そのビデオプレゼンテーションはプライベートであるようです。 – Traveler

+0

@Traveler、ええ、それは公にされていたのは残念です。意図的なのか一時的な見落としなのか分かりません。 – huynhjl

+0

@Traveler、私は彼らがそれを修正したと思う、私はちょうど試したとビデオは現在利用可能です。 – huynhjl

関連する問題