【问题标题】:What type of serialization uses Wcf behind the scenes?什么类型的序列化在幕后使用 Wcf?
【发布时间】:2011-09-03 16:45:37
【问题描述】:

我知道 .net 中有 3 种类型的序列化:

Soap , Xml , Binary.

Wcf 指示了 DataContract 属性,该属性也序列化...但是通过 what

二进制不是 - 我知道。

那么通过什么机制

【问题讨论】:

    标签: wcf


    【解决方案1】:

    它是为给定端点定义的绑定,它指定了序列化机制。例如:

    • basicHttpBindingwsHttpBinding 使用 SOAP
    • netTcpBinding 使用二进制序列化
    • webHttpBinding 可以使用 XML、Json、...

    您可以在this article 上阅读有关不同内置绑定及其属性的更多信息。由于 WCF 的可扩展性,您当然可以编写自己的自定义绑定。

    【讨论】:

    • Soap 不是序列化机制。
    【解决方案2】:

    你把两种技术混在一起了。

    • 序列化 - 如何将对象转换为消息 - 我们提供开箱即用的 XML 和 JSON 格式化程序(DataContractSerializerDataContractJsonSerializerXmlSerializer
    • 编码 - 消息的传输方式 - 我们有三个开箱即用的编码器
      • TextMessageEncoder - 用于以文本形式传输的 SOAP 消息 - 如果消息版本设置为 None,还支持 MTOM 和 POX(普通旧 XML)
      • BinaryMessageEncoder - 用于作为二进制数据传输的 XML/SOAP 消息
      • WebMessageEncoder - 用于 REST 服务中的 XML 和 JSON 消息

    这些功能由标准绑定使用。 WCF 支持任意数量的序列化和编码 => 您可以构建自己的。

    【讨论】:

    • 有二进制序列化的实现吗?我不希望序列化程序在每次发送属性时都传输属性名称?
    • 我可以在 wshttpbinding 中指定使用 dataContractJsonSerializer 吗?
    • @MichaelFreidgeim:不。WsHttpBinding 用于 Soap 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    相关资源
    最近更新 更多