1

背景

有一个 RESTful API 提供了一些操作。此 RESTful API 由第三方使用,这些第三方必须在平台中进行身份验证和授权才能访问 API 的操作。

第三方需要可靠的数据消费,API必须提供基于发布者/消费者模式的解决方案来消费部分数据。

由于所谓的API 不会重新发明轮子,它即将使用Windows Azure Service Bus

问题

RESTful API 应该抽象出实际的服务总线服务。另一方面,Service Bus 是在自己的平台中提供可靠消息传递的解决方案

实际上,Service Bus 不是一个独立的服务,而是一些工作流的一部分。第三方不应拥有 Windows Azure 凭据

第三方应使用特定于 API 的凭据连接到 Windows Azure 服务总线,该凭据可以访问服务总线的主题(即消息队列)。

可能的解决方案

一个。授权直接访问 Windows Azure 服务总线

这似乎是最简单的解决方案。让我们看看流程:

  1. 第三方向 RESTful API 发送请求,以获取 Windows Azure 服务总线连接字符串 - 凭据 -
  2. 一旦有了连接字符串,第三方就会连接到 Windows 服务总线并开始从某个主题订阅接收消息。注意:连接字符串在服务器端加密,只能由接受的客户端解密。

优点

  • 简单的。API 授权第三方使用 Windows Azure 服务总线,它没有其他责任。
  • 自己的 API 不管理主题订阅者的高负载:这是由 Windows Azure 平台处理的。

缺点

  • 第三方与 Windows Azure 密切相关。
  • 第三方可以轻松绕过 RESTful API 一段时间。

湾。代理访问 Windows Azure 服务总线

这有可能吗?整个流程将是:

  1. 第三方请求一个类似于 RESTful 的 TCP API,以便订阅某些 Windows Azure 服务总线主题。
  2. TCP API 建立连接并创建代理,以便将 TCP API 连接到服务总线 I/O 镜像到 TCP API 到第三方。
  3. 现在第三方连接到代理并发送和接收消息

优点

  • 第三方通过代理连接,这意味着他们不拥有任何 Windows Azure 凭据,也无法绕过 TCP 或 RESTful API。
  • 消息传递不再完全依赖于 Windows Azure。

缺点

  • 如果 Windows Azure 服务总线关闭连接会发生什么?
  • 如果平台代理出现故障会发生什么?

C。Windows Azure 服务总线服务器包装器

这是定义和流程:

  1. RESTful API 服务器具有 Windows Azure 服务总线订阅连接池
  2. 第三方订阅了 API 服务器的 TCP 套接字或 WebSocket
  3. 每当 Windows Azure 服务总线有消息时,它都会被路由到第三方连接池,第三方会收到消息
  4. 第三方使用 RESTful API 发送消息

优点

  • 第三方完全不知道服务总线技术。

缺点

  • b 相同。方法。

问题

  • b。方法可能吗?

  • 你对c有什么建议。Windows Azure 服务总线服务器包装器。您是否发现在正常运行时间和 Windows Azure 服务总线与 API 和 API 与第三方同步方面的可靠性越低,这是一场可以避免的战争?

  • 我错了,这些方法还有其他选择吗?

4

1 回答 1

2

最后,我选择了选项 a。授权直接访问 Windows Azure 服务总线。

这是使用Windows Azure 访问控制服务

使用这种方法,第三方会收到一个 Azure 服务总线连接字符串,其中包含对某些主题具有特定权限的颁发者(身份)。例如:“消费者只能听”。

有关此的更多详细信息:

于 2012-12-13T09:34:45.123 回答