2016-05-16 76 views
1

我目前正在Azure中使用不同的Web API服務開發基於SOA的體系結構(它們可能有資格作爲微服務,但我很猶豫使用該術語)。Azure Web API - 如何在服務之間進行通信

我有一個由Azure Scheduler觸發的服務。它做了一些「事情」,然後需要調用另一個Web API(通過HttpClient)來觸發其他事情。爲此,我需要知道第二個服務的URI。當本地運行,這是好的,因爲它是一樣的東西

POST http://localhost:1234/2ndService/api/action

然而,當我部署到Azure中(使用僅供內部訪問級別),它得到一個模糊的URI,如http://microsoft-apiapp8cf3d453-39d8-4b3b-ad00-e9d8008a9b58,在部署時我顯然無法猜測。

關於如何解決這個問題的任何想法?或者我在這裏犯了一個基本錯誤?

回答

0

對於Azure Web應用程序,您可能會始終看到此類屬性將轉到Web應用程序儀表板,然後是屬性。從Visual Studio部署時,您可以根據需要設置URL - 只需檢查它即可,並且工作正常。

1

您是否考慮通過queues in Azure Table Services傳遞消息,而不是依賴公共http端點?這非常簡單,並且將會更加強大,因爲您可以利用內置功能(如保證消息傳遞)。

總的想法是,服務A做一些「東西」,然後將消息放在隊列ONE上。服務B不斷從第一隊列中讀取信息,直到它從服務A(或任何其他服務)接收到新消息,然後執行其「STUFF」。您可以繼續將此類調用連接到需要通知的其他服務。

如果你想要一個更優雅的解決方案,你可以看看使用Service Bus Topics但這個概念基本上是相同的。

此外,由於您提到您的架構非常類似於微服務,因此您可以查看專爲您的方案設計的新Service Fabric

0

不太清楚你使用的是什麼技術 - 它是IaaS VM嗎?它是Web應用程序嗎?

從我的觀點來看,每個服務都應該作爲單獨的Web應用程序(或API應用程序,如果需要)進行部署。每個Web App都定義了自己的名稱,如yourwebapp.azurewebsites.net,因此,一旦您在Azure中設置了Web App 1,就知道它的地址,因此您將從Web App No 2調用它。

In所有的情況下,你應該有完全合格的域名,而不是本地/內部的。

+0

我們將使用API​​應用程序。我似乎有這個問題,我希望他們都是「內部」隱私(即只能訪問同一地區內的其他API應用程序)。這似乎使名稱不可確定(即,而不是yourapp.azurewebsites.net,它變成http:// microsoft-apiapp8cf3d453-39d8-4b3b-ad00-e9d8008a9b58 /) – Jamie

+0

如果你想控制訪問,你將要麼認證你的API(最好),或/你可以在[應用程序服務環境](https://azure.microsoft.com/en-us/documentation/articles/app-service-app-service-environment)中部署API應用程序-intro /),那麼您將能夠控制VNET /子網級別的安全性。 – LeCampusAzure

相關問題