我有一个场景,我需要在Azure service Bus上托管一个web服务,并将其公开以供跨平台客户端(.NET或java或其他任何客户端)使用。有哪些不同的协议可以满足这种情况?我考虑的是一种带有预定义的xsd、REST、SOAP甚至JSON数据包的纯XML格式。我正在考虑一个basicHttpRelayBinding来暴露合同。敬请指教。
发布于 2012-07-03 02:46:39
REST为您提供了最终的可移植性,因为URL非常易于调试,并且很容易在任何平台上创建这样的接口。JSON基本上是这个路线的一个可选扩展,用于以统一的方式处理更复杂的类型;当然,当接口被设计得尽可能简单时,REST客户端工作得最好,不管有没有JSON。
假设您使用HTTP绑定而不是TCP绑定,SOAP是连接到Java的一种很好的可能性。但是,您可能会遇到SOAP工具包不可用或不可用的平台,并且SOAP的所有优点都将开始对您不利。
发布于 2012-07-03 02:44:36
对于绝大多数平台和语言,公开SOAP服务应该都能很好地工作。
发布于 2012-07-03 02:49:26
因为您希望服务由许多不同的客户机使用,所以我应该避免使用基于SOAP的绑定,如basicHttpRelayBinding,而使用webHttpRelayBinding
http://msdn.microsoft.com/en-us/library/microsoft.servicebus.webhttprelaybinding.aspx
这将使PHP、浏览器或移动设备等框架更容易使用您的服务。
此外,如果您的目标是移动客户端,那么一定要考虑JSON而不是XML。它可以显著减少您的消息有效负载大小-这对于移动客户端非常重要,因为人们可能会使用按字节付费的数据计划。
JSON显然也更适合javascript (浏览器)客户端使用。
https://stackoverflow.com/questions/11299323
复制相似问题