我有这样的场景,我需要在Azure Service Bus上托管Web服务(WCF)并将其公开以供跨平台客户端(.NET或Java或任何其他)使用。哪种不同的协议可以满足这种情况?我正在考虑使用预定义的xsd或REST或SOAP甚至是JSON数据包的纯XML格式。我正在考虑使用basicHttpRelayBinding来公开合同。请指教。
答案 0 :(得分:1)
公开SOAP服务应该适用于绝大多数平台和语言。
答案 1 :(得分:1)
由于您希望服务被许多不同的客户端使用,我将避免使用基于SOAP的绑定,如basicHttpRelayBinding,而是转而使用webHttpRelayBinding
http://msdn.microsoft.com/en-us/library/microsoft.servicebus.webhttprelaybinding.aspx
这将使PHP,浏览器或移动设备等框架更容易使用您的服务。
此外,如果您的目标是移动客户端,请务必考虑使用JSON而不是XML。它可以显着减少您的消息有效负载大小 - 对于人们可能使用按字节付费数据计划的移动客户端非常重要。
JSON(浏览器)客户端也可以更好地使用JSON。
答案 2 :(得分:0)
REST为您提供了终极的可移植性,因为URL非常直观,可以在任何平台上轻松创建此类界面。 JSON基本上是此路由的可选扩展,以统一的方式处理更复杂的类型;当然,当接口设计得尽可能简单时,无论有没有JSON,REST客户端都能发挥最佳效果。
SOAP是与Java接口的优雅可能性,假设您使用HTTP绑定而不是TCP绑定。但是,您可能遇到SOAP工具包不可用或不可靠的平台,而SOAP的所有优点将开始对您不利。