如何更改Wcf以使用不同的序列化程序?

时间:2010-10-29 10:20:08

标签: wcf

默认WCF使用DataContractSerialization,所以如果我们可以更改它,那么我的问题是如何更改它以及何时需要在wcf上进行哪个序列化?

3 个答案:

答案 0 :(得分:6)

您可以使用服务合约上的XmlSerializerFormatAttribute属性强制WCF使用XmlSerializer

答案 1 :(得分:4)

WCF有一个很好的功能,即方法可以返回MessageStream(请参阅Returning raw json (string) in wcfHow to set Json.Net as the default serializer for WCF REST service作为示例)。您需要编写的相应代码可以更加轻松,就像您将使用更先进的技术Extending Encoders and Serializers一样。因此,例如,实现Streaming Message Transfer非常容易,或者只是因某些WCF方法而返回JPG或Excel文件。

答案 2 :(得分:1)

DataContractSerializer的默认选择适用于大多数用途。您还可以使用DataContractJsonSerializer 专门用于REST类型的服务,如果客户端需要Json内容类型。如果您需要对生成的XML进行更多控制,则另一个选项是XmlSerializer以实现互操作性。 DataContractSerializer比XmlSerializer更有效。

在第三方选项中,您可以使用Google提供的protobuf-net,这比DataContract Serializer更有效。