【发布时间】:2010-03-29 14:02:28
【问题描述】:
我需要使用 WCF 服务发送 byte[] 数组,我关心消息大小和性能。我的问题是:WCF 是否在内部将我的二进制数据转换为 Base64 字符串? (我用的是netTcpBinding)如果有,如何防止?
我的合同看起来很简单
IMyService
{
byte[] GetData()
}
【问题讨论】:
标签: wcf performance
我需要使用 WCF 服务发送 byte[] 数组,我关心消息大小和性能。我的问题是:WCF 是否在内部将我的二进制数据转换为 Base64 字符串? (我用的是netTcpBinding)如果有,如何防止?
我的合同看起来很简单
IMyService
{
byte[] GetData()
}
【问题讨论】:
标签: wcf performance
就实际的 XML 而言,字节数组被序列化为xs:base64Binary,这是一种 Base64 编码(显然)。
但是,当您指定 netTcpBinding 时,WCF 使用该 XML (BinaryMessageEncodingBindingElement) 的二进制消息编码,它将这些字节编码为二进制流。
这是一个有点复杂的过程,但归根结底,如果您使用任何 net* 绑定,字节数组将作为原始字节传输,而不是 base64 字符串。如果可以的话,这就是为什么使用 TCP 或命名管道绑定通常更有效的众多原因之一。
【讨论】: