0

我们正在实施 Azure 服务总线中继以使用 WCF 服务,并且我们已成功使用来自 ASP.NET MVC 应用程序的服务总线使用服务。

我们想使用来自 AngularJS 的 Azure 服务总线中继来使用这些服务。

有什么方法可以从 AngularJS 访问 Azure 服务总线?还是我们需要编写额外的 API 层来使用服务总线使用服务?

请提供指导和指示。

4

2 回答 2

1

不,您不能从 AngularJS 代码连接到服务总线中继,因为 JavaScript 仅支持通过 HTTP 进行 Ajax 调用,其中服务总线中继通过 TCP 连接进行通信而不使用 HTTP。

您需要在应用程序中编写服务器端代码,通过 Azure 服务总线中继连接到 WCF 服务并与之通信。然后,您可以通过从客户端 AngularJS 代码向服务器端 Web 应用程序进行 Ajax 调用,向 AngularJS 代码公开您需要的任何数据和功能。

无论如何,您都有一个在服务器上运行的 Web 应用程序,因此集成它对您来说应该不是问题。

层和调用堆栈轮廓将是:

  1. AngularJS 代码回调它所托管的 Web 应用程序

  2. 对 Web 应用程序的 Ajax 调用连接到服务总线中继

  3. 服务总线中继与 WCF 服务通信

  4. WCF 服务处理方法调用并返回响应

  5. 服务总线中继将 WCF 方法响应发送回 Web 应用

  6. Web App 向 AngularJS 代码返回 Ajax 响应

  7. AngularJS 接收 Ajax 响应并执行它需要的结果。

此外,如果您可以直接从 Web 应用程序中的 AngularJS / JavaScript 代码调用服务总线中继,您仍然会遇到跨域起源问题,因为服务总线中继托管在与您的 Web 应用程序不同的域上。

于 2016-02-24T17:14:52.197 回答
0

尝试使用WebHttpRelayBindingfor 您的服务通过 HTTP 使用它:

https://msdn.microsoft.com/en-us/library/azure/microsoft.servicebus.webhttprelaybinding.aspx

@Chris Pietschmann 提出的 CORs 问题在这里仍然有效。如果您的服务设置它,不确定 Relay 是否会通过该标题。还要确保您允许未经身份验证的用户——您不想暴露您的安全令牌 =)

于 2016-02-24T18:02:44.317 回答