Справочная информация: Я пытаюсь написать простой класс SoapExtension для регистрации входящих / исходящих сообщений Soap от веб-службы asmx.После этой статьи на MSDN я смог заставить все работать.Однако мне бы очень хотелось понять, почему / как это работает, а не просто копировать и вставлять код.
Вопрос: Что я пытаюсь понять, так это обработка ввода-выводапотоки в примере.Все остальные статьи, которые я читал в Интернете, обрабатывают потоки идентичным образом ... сначала получают ссылку на исходный поток, создают «работающий» поток в памяти, а затем меняют содержимое по мере необходимости.
Первый вопрос: что подразумевается под «цепочкой потоков» в этом контексте?Мое понимание потоков состоит в том, что запись в любой поток будет автоматически записывать «внутренние» потоки в конвейере.Если это так, то почему необходимо вручную копировать содержимое из одного потока в другой?
Второй вопрос заключается в том, что в примерах метода Copy они каждый раз создают StreamReader и StreamWriter без их утилизации -это не оказывает дополнительного давления на GC?Не похоже, что вы хотели бы получить в веб-сервисе с высоким трафиком ... Я попытался обернуть оба в использование операторов, но удаление читателя / писателя также закрыло поток, что привело к более серьезным ошибкам.В .NET 4 появились новые методы Stream.CopyTo (Stream), но что может быть лучше для .NET 3.5?