У меня есть проект, в котором я могу захотеть абстрагировать связь между клиентом и сервером. Я изначально использовал сокеты и TCP. Затем я подумал, что было бы неплохо иметь возможность переключиться на канал межпроцессного взаимодействия. Затем я посмотрел на класс System.IO.PipedStream и увидел, что между PipeStream и классом Socket было много совпадений. Но когда я взглянул на класс Socket, он наследуется от Object. Таким образом, между Socket и PipeStreams нет общего интерфейса или абстрактного класса.
Затем я вспомнил кое-что о NetworkStream. Это очевидно оборачивает класс Сокета. Но по крайней мере и NetworkStream, и PipeStream наследуются от Stream. Что означает, что я могу поменять свою реализацию. Я думаю, я еще не пробовал это. Я все это время использовал сокеты.
Итак, мой вопрос: есть ли недостаток в использовании класса NetworkStream по сравнению с классом Socket. Есть какие-нибудь ошибки или что-то, на что стоит обратить внимание?