Leave a comment

Comments 2

jakobz March 24 2009, 11:45:18 UTC
Вот интересный подход:
http://www.codeproject.com/KB/dotnet/echostream.aspx
Создается wrapper для потока, который все считаное/записаное читает/пишет в slave-поток.
В твоем случае, как я понял, это полностью не решило бы проблему - ты не знаешь нужно ли тебе будет трассировать в момент подсовывания потока. Но вообще такой подход может быть правильнее, чем читать в MemoryStream:
- не нужно считывать сначала все в память: реквест может обрабатываться, а копия прочитаного формироваться параллельно
- если что-то произойдет до окончания отправки запроса, у тебя останется уже прочитаный кусок
- если направить slave-поток прямо в файл, а не в MemoryStream, то не нужно будет держать весь поток в памяти.

Я эту штуку юзал для логирования в одном адаптере. Там нужно было XmlReader на поток из TcpClient натравливать. И просто считать в память чтобы прологировать было нельзя - только XmlReader мог выпалить когда заканчивать чтение.

Reply

ideafixxxer March 24 2009, 13:16:10 UTC
Да, штука интересная, можно совместить два подхода. Правда, прямо в файл отправить не получится, у нас примитивный трейсер, он только строку пишет (естественно, я вырезал из имплементации половину кода, не имеющего отношения к сути). Но память немного сэкономить можно.

Reply


Leave a comment

Up