Некоторые потоки в c # имеют «направление» в том смысле, что они предназначены для использования в одном направлении. Для некоторых из них, таких как FileStream и NetworkStream, это имеет смысл, а для других нет.
Например, с помощью GZipStream вы можете сжимать или распаковывать данные, записывая их в поток в зависимости от параметров конструктора. CryptoStream, с другой стороны, перенаправляет зашифрованные данные на дальнюю сторону, где дешифрование переводится в операцию чтения, а шифрование - в операцию записи.
Особенно при работе с криптографическими реализациями. Вызывает раздражение принудительное продвижение данных в определенном направлении.
Есть ли какая-то особая мотивация для реализации некоторых потоков только в одном направлении?
Обновление: Чтобы прояснить, я ищу понимание того, почему некоторые проекты используют только одно направление, а не выбор направления. Кто-нибудь думал об этом раньше и нашел объяснение или, может быть, его нет.
Получение текущего потока данных, которые необходимо обработать как можно скорее. Поэтому вы хотите записать байты в поток декодирования по мере их получения.
В CryptoStream нет естественной зависимости от того, сколько байтов вы поместили в поток памяти и сколько байтов вы можете прочитать расшифрованными. Здесь вы должны принять во внимание конкретные детали реализации, такие как размер блока.
GZipStream может справиться с этим, изменив направление сжатия.