XmlMtomReader是否在内部缓存输入流中的二进制数据?

时间:2009-10-01 12:37:02

标签: c# xml wcf xmlreader mtom

实际上我想知道XmlMtomReader是否直接从输入流中读取mime二进制部分?或者在我调用ReadContentAsBase64()方法之前将它们存储在内部?

1 个答案:

答案 0 :(得分:1)

我记得(并且已经有一段时间......),XmlMtomReader会根据MIME部分在输入流中的显示顺序执行所需的最小内部存储量。 (MTOM标准允许它们以任何顺序出现。)

因此,如果输入流是,例如:

  • 二元第1部分
  • 然后是主要的XML部分,例如
  

< a />< b> ...二进制部分1 ...< / b>< c> ...二进制部分2 ...< / c>< / d>

  • 然后二元第2部分

以下是发生的事情:

  • 要开始阅读XML(元素“a”),它必须在内部存储二进制第1部分
  • 当您阅读元素“b”的内容时,它来自内部存储
  • 当您开始读取元素“c”时,它会在内部存储XML的其余部分(元素“d”),并将流前进到二进制第2部分。此时读取元素“c”的内容,它直接来自流,而不是来自存储。
  • 当您最后读取元素“d”时,XML来自内部存储