node.js - introduccion - NodeJS: ¿Cuál es la diferencia entre un flujo Duplex y un flujo Transform?
node stream transform (3)
Los documentos de Stream indican que las transmisiones dúplex "son transmisiones que implementan tanto las interfaces legibles como las legibles" y las secuencias transformadas "son transmisiones dúplex en las que la salida se calcula de alguna manera a partir de la entrada". Lamentablemente, los documentos no describen qué flujos de Transform proporcionan más allá de las transmisiones Duplex.
¿Hay alguna diferencia entre los dos? ¿Cuándo usarías uno sobre el otro?
Si lee la API para la sección implementadores de flujo de los documentos, indica que algunos casos de uso posibles para las transmisiones dúplex y transformación son "Lectura y escritura" y "Operar en datos escritos, luego lea el resultado", respectivamente.
Simplemente ponga el flujo Transform le permite implementar el método _transform
que toma alguna entrada y devuelve el resultado después de que se haya realizado alguna operación en los datos, y puede usarse para cosas como compresión o hash, mientras que el flujo Duplex se puede usar para cosas como una conexión de socket TCP donde solo envía y recibe datos.
Una secuencia dúplex puede considerarse una secuencia legible con una secuencia grabable. Ambos son independientes y cada uno tiene un buffer interno separado. Los eventos de lectura y escritura ocurren de forma independiente.
Duplex Stream ------------------| Read <----- External Source You ------------------| Write -----> External Sink ------------------| You don''t get what you write. It is sent to another source.
Un flujo de transformación es un dúplex donde la lectura y la escritura tienen lugar de manera casual. Los puntos finales de la secuencia dúplex están vinculados mediante alguna transformación. Leer requiere que se haya producido la escritura.
Transform Stream --------------|-------------- You Write ----> ----> Read You --------------|-------------- You write something, it is transformed, then you read something.
La diferencia es solo azúcar sintáctica. Las transmisiones de transformación son secuencias full dúplex, pero en lugar de implementar los métodos _write
y _read
, se le solicita que implemente solo el método _transform
. Puede leer más sobre las transmisiones en la excelente guía de transmisiones de Substack o en el repositorio de secuencias legibles de Isaacs .