背景: 我想寫一個簡單的SoapExtension類來記錄來自asmx web服務的入站/出站Soap消息。按照this article on msdn,我已經能夠使事情工作。不過,我真的很想知道爲什麼/它是如何工作的,而不是複製粘貼代碼&。C#擴展SoapExtension -
問題: 我特別要抓的是處理IO流的例子。我在網上閱讀的所有其他文章都以相同的方式處理流...首先獲取對原始流的引用,創建內存「工作」流,然後根據需要交換內容。
第一個問題是,在這種情況下,「流鏈」是什麼意思?我對流的解釋是,寫入任何流將自動寫入流水線中的「內部」流。如果是這種情況,爲什麼需要手動將內容從一個流複製到另一個流?
第二個問題是,在示例Copy方法中,他們每次都創建StreamReader和StreamWriter,而不處理它們 - 這不會給GC帶來額外的壓力嗎?似乎沒有你想要的高流量的Web服務...我試圖包裝在使用語句,但處置讀寫器也封閉了流導致更嚴重的錯誤。 .NET 4有新的Stream.CopyTo(Stream)方法,但是對於.NET 3.5來說更好的方法是什麼?
+1爲偉大的鏈接! – MattDavey 2011-04-01 12:26:37
鏈接已死。這是互聯網檔案連結:https://web.archive.org/web/20131027132243/http://hyperthink.net/blog/inside-of-chainstream/ – cbeuker 2015-12-30 17:55:41