2016-02-24 49 views
0

我們正在實施Azure服務總線中繼以使用WCF服務,並且我們已成功使用ASP.NET MVC應用程序中的服務總線使用服務。使用Javascript客戶端(AngularJS)的azure服務總線中繼

我們希望使用Azure的服務總線中繼從AngularJS消費這種服務。

有沒有辦法從AngularJS訪問Azure服務總線?還是我們需要編寫額外的API層來使用服務總線來使用服務?

請提供指導和指針。

回答

1

不,你不能從AngularJS代碼連接到服務總線中繼,因爲JavaScript的只支持使Ajax調用通過HTTP,在服務總線中繼通而不使用HTTP TCP連接進行通信。

你需要編寫服務器端代碼在您的應用程序通過Azure的服務總線中繼連接並傳送給WCF服務。然後,您可以通過從客戶端AngularJS代碼向服務器端Web應用程序進行Ajax調用,向AngularJS代碼展示所需的任何數據和功能。

您有反正在服務器上運行的Web應用程序,因此整合這不應該對您的問題。

層和調用堆棧輪廓是:

  1. AngularJS代碼調用回Web應用程序它的內

  2. Ajax調用Web應用程序連接到服務總線繼電器

  3. 託管服務總線繼電器與WCF服務

  4. WCF服務處理方法調用並返回通信響應

  5. 服務總線中繼發送WCF方法響應返回給Web應用程序

  6. Web應用程序返回到AngularJS代碼Ajax響應

  7. AngularJS接收Ajax響應並執行它所需要的結果。

此外,如果你能直接從您的Web應用程序的AngularJS/JavaScript代碼調用服務總線繼電器,你還是會有跨域起源問題,因爲服務總線繼電器上比不同的域託管您的Web應用程序。

+0

Relay使用WebHttpRelayBinding時支持HTTP調用:https://msdn.microsoft.com/en-us/library /azure/microsoft.servicebus.webhttprelaybinding.aspx – TheDude

+0

CORs問題是一個不同的問題。如果您的服務返回了中繼,則不確定中繼是否會傳遞標頭。 – TheDude

+0

@克里斯:感謝您的幫助,我以相同的方式完成了任務。如果您發現任何其他指針或標準方式,請分享它。 – Nikhil

0

嘗試使用WebHttpRelayBinding爲您服務通過HTTP來使用它:

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

的CORS問題是@克里斯Pietschmann長大的仍然是有效的在這裏。不知道如果你的服務設置了Relay,Relay是否會流過這個頭。還請確保您允許未經身份驗證的用戶 - 您不想公開您的安全令牌=)

+0

感謝您的幫助,如果可能請提供JavaScript指針。 (我第一次實現Azure服務總線) – Nikhil

+0

我認爲你應該嘗試使用WebHttpRelayBinding和WebServiceHost設置一個監聽器,然後嘗試首先從瀏覽器中點擊該URL。 – TheDude

相關問題