了解Node.js中的stream

我目前正试图围绕Node的stream。 我想我明白了,但我不确定。 让我感到困惑的是Dominic Tarr的这句话 :

stream是节点最好的和最误解的想法,

由于多米尼克绝对是一个聪明的人(我想我比我更聪明),我不确定我是否真正理解了数据stream,或者如果我错过了这一点;-)。 因此,我想解释一下,我是如何理解溪stream并要求你们批准或拒绝的。

我对stream的基本理解是stream是一种将数据从源传输到目标的抽象包装。 有可读可写的stream和可读写的双工stream。 这个想法是抽象出实际的源或目标,以便您可以专注于处理stream而不需要知道您正在处理的实际资源。 你只是访问一个阅读和/或写作stream。

我对Node.jsstream的理解是正确的吗? 基本上,这和.NET中的stream(这是我过去12年左右的背景)是一样的。 如何在.NET中的Node.jsstream与stream不同?

举个例子:如果我想从一个文件或networking资源中读取数据,并不重要,我只是使用一个数据stream抽取实际的数据源,然后从这个数据stream中读取数据。 我甚至可以改变源代码,但是我的stream读代码仍然会以完全相同的方式工作。 它是否正确?

我想你说得对。 Node中的Streams就像花园软pipe一样工作。 您可以连接源和目的地(可以是可读/可写或双工stream),还可以将stream的输出连接到另一个stream的input,进一步扩展数据的传输方式。

去年的LXJS会议上,Substack在Node.js上对Streams进行了一次精彩的演讲:
LXJS 2012 – James Halliday – 利用stream的真棒力量

这是非常压缩的(你必须不时暂停video,因为他的编码速度快得令人难以置信),但对stream的工作原理给人留下了很好的印象。