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