在开发可互操作的WCF Web服务时,我应该知道什么?

时间:2010-08-19 18:41:53

标签: wcf web-services interop wcf-interoperability

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

3 个答案:

答案 0 :(得分:4)

相当简单:

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

  • 不要使用任何以net开头的绑定,如netTcp,netNamedPipes,netMsmq等等 - 使用wsHttpBinding作为安全的WS- *服务,使用basicHttpBinding作为即使是最奇怪的客户端平台也能达到最大范围/兼容性

  • 不要使用NetDataContractSerializer

答案 1 :(得分:3)

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

答案 2 :(得分:3)

一般互操作性:

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

修改

  • WSDualHttpBinding和CompositeDuplexBindingElement不可互操作