1
3
TCP绑定默认使用二进制消息编码器,在第二个示例中,您只是将数据契约序列化为XML。二进制消息编码器的作用是,它基本上为数据契约序列化程序提供了一个自定义XmlWriter实现,该实现生成专有的二进制格式,而不是XML。 如果您想将它与其他绑定(比如HTTP)一起使用,那么您需要创建一个自定义绑定,并添加 BinaryMessageEncodingElement 元素而不是普通的TextMessageEncoding元素。 |
2
1
您无法控制DataContractSerializer,但可以在WCF绑定中控制它是序列化为文本格式还是二进制格式。 正如您自己所注意到的,NetTcpBinding默认为二进制,因此非常紧凑和快速。出于互操作性的考虑,基于Http的绑定默认为文本,因此更详细,性能更低。 但是没有什么可以阻止您创建自己的基于二进制的HTTP绑定- 如果 如果您这样做,您愿意接受与外部客户机的互操作性是不存在的。这只适用于使用相同自定义绑定的内部客户端。 基本上,您需要做的是在代码或配置中从头开始构建自己的自定义绑定。在配置中,这非常简单:
你所需要的两个最小部分 必须 指定消息编码和传输协议-其他任何内容都是可选的。 现在,您可以指定您的WCF服务和客户端,以便它们使用此新的自定义二进制over HTTP绑定:
这就是您所拥有的—这不是以任何方式、形状或形式控制代码中的DataContractSerializer的问题—只是创建一个自定义绑定并使用它。 马克
(在留下评论后):
|
3
0
你有没有阅读网站上的文档 DataContractSerializer ?
然后你会想读到 XmlDictionaryWriter . |
4
0
以下是我能找到的解决问题的最简单方法:
…在哪里
或
…这取决于您想要的是文本格式还是二进制格式。 |
Kuczi · C#如何以不同方式序列化对象 7 年前 |