C# 可由跨平台客户端使用的WCF

C# 可由跨平台客户端使用的WCF,c#,wcf,web-services,azure,servicebus,C#,Wcf,Web Services,Azure,Servicebus,我有一个场景,我需要在Azure服务总线上托管一个web服务(WCF),并将其公开给跨平台客户端(.NET或java或任何其他)使用。有什么不同的协议可以满足这种情况?我正在考虑使用预定义的xsd、REST、SOAP甚至JSON数据包的纯XML格式。我正在考虑一个基本的延期令来公布合同。请给出建议。公开SOAP服务对于绝大多数平台和语言应该都可以正常工作。REST为您提供了终极的可移植性,因为URL调试非常直观,并且在任何平台上创建这样的接口都很容易。JSON基本上是该路由的可选扩展,以统一的方

我有一个场景,我需要在Azure服务总线上托管一个web服务(WCF),并将其公开给跨平台客户端(.NET或java或任何其他)使用。有什么不同的协议可以满足这种情况?我正在考虑使用预定义的xsd、REST、SOAP甚至JSON数据包的纯XML格式。我正在考虑一个基本的延期令来公布合同。请给出建议。

公开SOAP服务对于绝大多数平台和语言应该都可以正常工作。

REST为您提供了终极的可移植性,因为URL调试非常直观,并且在任何平台上创建这样的接口都很容易。JSON基本上是该路由的可选扩展,以统一的方式处理更复杂的类型;当然,REST客户机在接口设计为尽可能简单时工作得最好,不管有没有JSON


假设您使用HTTP绑定而不是TCP绑定,SOAP是与Java接口的一种极好的可能性。但是,您可能会遇到SOAP工具包不可用或不可靠的平台,SOAP的所有优点都会对您不利。

因为您希望服务被许多不同的客户机使用,所以我会避免使用基于SOAP的绑定,如basicHttpRelayBinding,而改用webHttpRelayBinding

这将使PHP、浏览器或移动设备等框架更容易使用您的服务

此外,如果您针对的是移动客户端,那么一定要考虑JSON而不是XML。它可以显著减少您的消息有效负载大小,这对于移动客户端来说非常重要,因为人们可能会使用按字节付费的数据计划

JSON显然也更适合javascript(浏览器)客户端使用