使用Javascript客户端(AngularJS)的Azure服务总线中继

时间:2016-02-24 11:21:09

标签: angularjs azure azure-servicebusrelay

我们正在实施Azure Service Bus Relay以使用WCF服务,并且我们已经使用ASP.NET MVC应用程序中的服务总线成功使用了服务。

我们希望使用AngularJS中的Azure Service Bus Relay来使用此服务。

  

有没有办法从AngularJS访问Azure Service Bus?或者我们是否需要编写额外的API层来使用服务总线来消费服务?

请提供指南和指示。

2 个答案:

答案 0 :(得分:1)

不能从AngularJS代码连接到Service Bus Relay,因为JavaScript只支持通过HTTP进行Ajax调用,其中Service Bus Relay通过TCP连接进行通信而不使用HTTP。

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

你有一个在服务器上运行的Web应用程序,所以整合这个应该不是你的问题。

图层和调用堆栈大纲将是:

  1. AngularJS代码回调其在

  2. 中托管的Web App
  3. Ajax对Web App的调用连接到Service Bus Relay

  4. 服务总线中继与WCF服务进行通信

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

  6. Service Bus Relay将WCF方法响应发送回Web App

  7. Web App返回对AngularJS代码的Ajax响应

  8. AngularJS接收Ajax响应并完成所需的操作。

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

答案 1 :(得分:0)

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

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

@Chris Pietschmann带来的CORs问题在这里仍然有效。如果您的服务设置了Relay,则不确定Relay是否会流过该标头。另外,请确保您允许未经身份验证的用户 - 您不希望公开您的安全令牌=)