Пытаюсь понять IDuplexPipe

#c# #.net-core #websocket #system.io.pipelines

#c# #.net-ядро #websocket #system.io.pipelines

Вопрос:

Я работаю над оболочкой веб-сокета вокруг потока веб-сокетов Binance. System.IO.Pipelines выглядит интересным для меня из-за проблем, которые он решает.

Я, скорее всего, собираюсь использовать одну из следующих реализаций:

Я не могу понять, в чем разница между IDuplexPipe и. Pipe

IDuplexPipe — это контракт для типов, которые поддерживают как чтение, так и запись. Например, сетевое соединение будет представлено IDuplexPipe .

Поскольку оболочка веб-сокета, над которой я работаю, связана с потоком веб-сокетов Binance, я полагаю, мне нужен IDuplexPipe ?

SignalR использует IDuplexPipe и DotNet.Интерактивный.PowerShell использует Pipe только класс. Можете ли вы пояснить, в чем разница между этими двумя, на примере реальной жизни, потому что я не совсем понимаю, что говорится в документации Microsoft.

Ответ №1:

Документация IDuplexPipe:

Определяет класс, который предоставляет дуплексный канал, из которого можно считывать и записывать данные.

IDuplexPipe — это интерфейс, представляющий то, что вы можете читать с помощью PipeReader и записывать с помощью PipeWriter .
Ввод-вывод.Трубопровод Pipe — это просто буфер.

Это объясняется в документах, на которые вы ссылались: https://docs.microsoft.com/en-us/dotnet/standard/io/pipelines#pipe

Класс Pipe можно использовать для создания пары PipeWriter / PipeReader. Все данные, записанные в PipeWriter, доступны в PipeReader: PipeWriter записывает данные в буфер, а PipeReader считывает из него.