Seb*_*ber 32 scala iterate playframework-2.0 rx-java scalaz-stream
我正在关注Coursera的Scala课程中的功能反应编程,我们处理RxScala Observables(基于RxJava).
据我所知,Play Iteratee的库看起来有点像RxScala Observables,其中Observables有点像Enumerators和Observers有点像Iteratees.
还有Scalaz Stream库,也许还有其他一些?
所以我想知道所有这些库之间的主要区别.在哪种情况下,一个可能比另一个更好?
PS:我想知道为什么Play Iteratees库没有被Martin Odersky选择用于他的课程,因为Play在Typesafe堆栈中.这是否意味着Martin喜欢RxScala而不是Play Iteratees?
编辑:在无流举措刚刚宣布,作为一种尝试standardize a common ground for achieving statically typed, high-performance, low latency, asynchronous streams of data with built-in non-blocking back pressure
Jam*_*per 20
PS:我想知道为什么Play Iteratees库没有被Martin Odersky选择用于他的课程,因为Play在Typesafe堆栈中.这是否意味着Martin喜欢RxScala而不是Play Iteratees?
我会回答这个问题.推送/教授的流API的决定不仅仅是由Martin制作的,而是由Typesafe作为一个整体.我不知道Martin个人喜欢什么(尽管我听过他说迭代对于新手来说太难了),但是我们在Typesafe认为Iteratees需要太高的学习曲线来教他们异步IO中的新手.
在一天结束时,流媒体库的选择真正归结为您的用例.Play的iteratees库几乎可以处理现有的所有流式使用案例,但代价是一个非常难学的API(即使是经验丰富的Haskell开发人员也常常会遇到迭代),而且性能也会有所下降.其他API处理较少的用例,例如RX(当前)没有处理背压,而其他API很少适合简单的流式解析.但是流式解析对于最终用户来说实际上是一个非常罕见的用例,在大多数情况下,它只需要缓冲然后解析就足够了.因此,Typesafe选择了易于学习并满足大多数常见用例的API.
Iteratees和Stream与RxJava并没有那么相似.关键的区别在于它们关注资源安全(即,一旦不再需要它们就关闭文件,套接字等),这需要反馈(Iteratees可以告诉调查员他们已经完成,但观察员不告诉任何事情到Observables)并使它们变得更加复杂.
归档时间: |
|
查看次数: |
2680 次 |
最近记录: |