【问题标题】:What should I know when developing interoperable WCF web service?开发可互操作的 WCF Web 服务时我应该知道什么?
【发布时间】:2010-08-19 18:41:53
【问题描述】:

我开始创建此 Wiki 以收集有关在 WCF 中创建可互操作的 Web 服务(而非客户端)的最佳实践。如果您知道任何通常不可互操作或无法与特定平台互操作的功能,请分享您的经验。

【问题讨论】:

    标签: wcf web-services interop wcf-interoperability


    【解决方案1】:

    相当简单:

    • 避免任何 .NET 细节,例如异常(将它们变成 SOAP 错误)

    • 不要使用任何以net 开头的绑定,例如 netTcp、netNamedPipes、netMsmq 等等 - 使用 wsHttpBinding 来获得安全的 WS-* 服务,使用 basicHttpBinding 来获得最大覆盖范围/与 even最奇怪的客户端平台

    • 不要使用 NetDataContractSerializer

    【讨论】:

    • 1) 有关如何将异常更改为 SOAP 错误的任何提示? - 我不确定这到底是什么意思。 2) 关于不使用 NetDataContractSerializer:我在我的数据合同上使用 System.Xml.Serialization,这是一个更好的互操作性选择吗?
    【解决方案2】:

    我建议 WCF REST 公开多种序列化格式,对于初学者来说绝对是 xml。

    【讨论】:

      【解决方案3】:

      一般互操作性:

      • 只有 HTTP 和 HTTPS 传输通道可以互操作
      • 安全凭证协商不可互操作(消息安全中的协商服务凭证)。它使用其他平台并不总是支持的 TLSNego 或 SPNego 协议。
      • HTTP 流式传输也会导致问题
      • HTTP 通道上的二进制编码不可互操作
      • OleTransaction 不可互操作
      • 谨慎使用服务安全上下文(消息安全中的estabilishSecurityContext)。它使用在某些平台上不可用的 WS-Secure Conversation 协议

      编辑:

      • WSDualHttpBinding 和 CompositeDuplexBindingElement 不能互操作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-30
        相关资源
        最近更新 更多