Mat*_*vey 9 c# soap stream soap-extension asmx
背景: 我正在尝试编写一个简单的SoapExtension类来记录来自asmx Web服务的入站/出站Soap消息.在这篇关于msdn的文章之后,我已经能够让事情变得有效了.但是,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码.
问题: 我正在努力掌握的是在示例中处理IO流.我在网上阅读的所有其他文章都以相同的方式处理流...首先获取对原始流的引用,创建内存"工作"流,然后根据需要交换内容.
第一个问题是,在这种情况下,"流链"是什么意思?我对流的理解是,写入任何流将自动写入管道中的"内部"流.如果是这种情况,为什么有必要手动将内容从一个流复制到另一个流?
第二个问题是,在示例复制方法中,他们每次都在创建一个StreamReader和StreamWriter,而不会丢弃它们 - 这是不是给GC带来了额外的压力?在高流量的Web服务上看起来不像你想要的东西......我尝试将两者都包含在使用语句中,但是处理读取器/写入器也关闭了流,这导致了更严重的错误..NET 4有新的Stream.CopyTo(Stream)方法,但对于.NET 3.5来说,更好的方法是什么?
好吧,通过链接流,您基本上可以让不同的流以链接顺序执行不同的操作。例如,您可以使用一个流来压缩数据,然后使用另一个流来加密数据(如果我们朝另一个方向移动,则相反)。
至于 ChainStream 本身,嗯……关于这个有很多话要说。我强烈推荐这篇名为Inside of Chainstream 的文章,它非常深入,也涵盖了您遇到的大部分问题。
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |