Расширение SoapExtension в C # -

Справочная информация: Я пытаюсь написать простой класс SoapExtension для регистрации входящих / исходящих сообщений Soap из веб-службы asmx. После этой статьи о msdn я смог заставить все работать. Однако мне бы очень хотелось понять, почему и как это работает, а не просто копировать и вставлять код.

Вопрос: В частности, я не могу понять, как в этом примере обрабатываются потоки ввода-вывода. Все остальные статьи, которые я читал в Интернете, обрабатывают потоки идентичным образом ... сначала получают ссылку на исходный поток, создают "рабочий" поток в памяти, а затем меняют местами содержимое по мере необходимости.

Сначала вопрос в том, что подразумевается под «цепочкой потоков» в этом контексте? Я понимаю потоки так, что запись в любой поток будет автоматически записывать во «внутренние» потоки в конвейере. В таком случае, почему необходимо вручную копировать содержимое из одного потока в другой?

Второй вопрос: в примерах метода копирования они создают StreamReader и StreamWriter каждый раз, не удаляя их - это не означает, что дополнительное давление на ГХ? Не Это похоже на то, что вам нужно в веб-сервисе с высоким трафиком ... Я попытался обернуть оба оператора using, но удаление читателя / писателя также закрыло поток, что привело к более серьезным ошибкам. В .NET 4 есть новые методы Stream.CopyTo (Stream), но что было бы лучше для .NET 3.5?

9
задан MattDavey 27 March 2011 в 21:42
поделиться