代码之家  ›  专栏  ›  技术社区  ›  Alex Ilyin

如何有效地使用wcf发送byte[]。

  •  1
  • Alex Ilyin  · 技术社区  · 15 年前

    我需要使用WCF服务发送byte[]数组,我关心消息的大小和性能。我的问题是:wcf是否在内部将二进制数据转换为base64字符串?(我使用nettcpbinding)如果是,如何防止它?

    我的合同看起来几乎和

    IMyService 
    {
      byte[] GetData()
    }
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Aaronaught    15 年前

    就实际的XML而言,字节数组序列化为 xs:base64Binary ,这是base64编码(显然)。

    但是,当指定nettcpbinding时,wcf使用该xml的二进制消息编码。( BinaryMessageEncodingBindingElement )它将这些字节编码为二进制流。

    这是一个有点复杂的过程,但是在一天结束的时候,如果你使用的是 net* 绑定、字节数组将作为原始字节(而不是base64字符串)进行连接。这是使用TCP或命名管道绑定(如果可以)通常更高效的原因之一。