#c# #.net-core #websocket #system.io.pipelines
#c# #.net-ядро #websocket #system.io.pipelines
Вопрос:
Я работаю над оболочкой веб-сокета вокруг потока веб-сокетов Binance. System.IO.Pipelines выглядит интересным для меня из-за проблем, которые он решает.
Я, скорее всего, собираюсь использовать одну из следующих реализаций:
- SignalR
- BotBuilder (не уверен, что именно это за проект)
- DotNet.Интерактивный.PowerShell
- проект, который, вероятно, был вдохновлен реализацией Microsoft
Я не могу понять, в чем разница между 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 считывает из него.