我们正在实施Azure Service Bus Relay以使用WCF服务,并且我们已经使用ASP.NET MVC应用程序中的服务总线成功使用了服务。
我们希望使用AngularJS中的Azure Service Bus Relay来使用此服务。
有没有办法从AngularJS访问Azure Service Bus?或者我们是否需要编写额外的API层来使用服务总线来消费服务?
请提供指南和指示。
答案 0 :(得分:1)
不能从AngularJS代码连接到Service Bus Relay,因为JavaScript只支持通过HTTP进行Ajax调用,其中Service Bus Relay通过TCP连接进行通信而不使用HTTP。
您需要在应用程序中编写服务器端代码,该代码通过Azure Service Bus Relay连接到WCF服务并与之通信。然后,您可以通过从客户端AngularJS代码到服务器端Web应用程序进行Ajax调用,向AngularJS代码公开所需的任何数据和功能。
你有一个在服务器上运行的Web应用程序,所以整合这个应该不是你的问题。
图层和调用堆栈大纲将是:
AngularJS代码回调其在
Ajax对Web App的调用连接到Service Bus Relay
服务总线中继与WCF服务进行通信
WCF服务处理方法调用并返回响应
Service Bus Relay将WCF方法响应发送回Web App
Web App返回对AngularJS代码的Ajax响应
AngularJS接收Ajax响应并完成所需的操作。
此外,如果您可以直接从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是否会流过该标头。另外,请确保您允许未经身份验证的用户 - 您不希望公开您的安全令牌=)