在开发可互操作的WCF web服务时,我应该知道什么?
我启动这个Wiki是为了收集有关在WCF中创建可互操作的web服务(而不是客户端)的最佳实践。如果您知道任何功能通常不可互操作,或者无法与特定平台互操作,请分享您的经验。相当简单:在开发可互操作的WCF web服务时,我应该知道什么?,wcf,web-services,interop,wcf-interoperability,Wcf,Web Services,Interop,Wcf Interoperability,我启动这个Wiki是为了收集有关在WCF中创建可互操作的web服务(而不是客户端)的最佳实践。如果您知道任何功能通常不可互操作,或者无法与特定平台互操作,请分享您的经验。相当简单: 避免任何.NET规范,如异常(将其转化为SOAP错误) 不要使用任何以net开头的绑定,比如netTcp、netNamedPipes、netMsmq等等-使用wsHttpBinding来获得安全的WS-*服务,使用basicHttpBinding来获得与最古怪的客户端平台的最大范围/兼容性 不要使用NetDataC
- 避免任何.NET规范,如异常(将其转化为SOAP错误)
- 不要使用任何以
开头的绑定,比如netTcp、netNamedPipes、netMsmq等等-使用net
来获得安全的WS-*服务,使用wsHttpBinding
来获得与最古怪的客户端平台的最大范围/兼容性basicHttpBinding
- 不要使用NetDataContractSerializer
- 只有HTTP和HTTPS传输通道是可互操作的
- 安全凭据的协商不可互操作(消息安全中的negotiateServiceCredential)。它使用其他平台并不总是支持的TLSNego或SPNego协议
- HTTP流也会引起麻烦
- HTTP通道上的二进制编码不可互操作
- 事务不可互操作
- 小心使用服务安全上下文(消息安全中的estabilishSecurityContext)。它使用WS-Secure对话协议,这在某些平台上不可用
- WSDualHttpBinding和CompositedPlexBindingElement不可互操作