2016-12-14 26 views
1

我想構建「Windows服務」的Azure PaaS等效項。我當然可以創建一個虛擬機並部署一個Windows服務,但我正在尋找可擴展/ PaaS的方式來實現這一點。本質上,我的應用程序是一個監視隊列的後端服務(例如Azure服務總線),並且當消息進入隊列時它將執行一堆處理邏輯(處理邏輯,訪問數據庫,調用其他Web服務,排隊其他過程等)。某些服務可能需要執行一些更「先進」的操作,例如創建子應用程序域,將臨時文件寫入磁盤等。用於批處理的Azure窗口服務

我應該尋找什麼樣的Azure解決方案來滿足此需求?

感覺Azure在過去的幾年裏已經發展了很多,當我試圖找出最好的服務來滿足我的需求時,我感到困惑。一些項目類型現在看起來已經過時了,但仍然有很多舊的文檔/博客。我看到了對WebJobs,Worker Roles,Logic Apps和Functions的引用。建立Azure服務的經驗更豐富的人能告訴我哪些技術可以滿足我的需求嗎?

我覺得這應該是一種明顯的和共同的需求,但也許我只是使用了錯誤的搜索條件,我並沒有真正找到很多似乎符合我確切需要的信息,或者我發現的信息是從2011年開始的,我擔心自那時起景觀發生了很大變化。

+0

WebJobs和Functions可以爲你做這項工作,有很多可用的文檔:webjobs https://docs.microsoft.com/en-us/azure/app-service/app-service-webjobs-readme?toc= %2fazure%2fapp服務的Web%2ftoc。json和函數https://docs.microsoft.com/en-us/azure/azure-functions/index – Milen

+0

[Azure Batch](https://azure.microsoft.com/en-us/services/batch/)是一個成熟的生產就緒服務,顧名思義,它專門爲批量處理工作負載量身定製。您可以將Azure功能觸發器與您的隊列相關聯,以創建Azure批處理作業,以使用autopool等功能執行幾乎任何工作負載(爲作業創建按需擴展資源,並在作業完成後自動將其刪除)和自動縮放(使用各種指標可自動擴展您的計算資源)。 – fpark

回答

2

您有選擇,就像您所說 - WebJobs,Logic應用程序,服務結構或功能,它取決於您需要或希望通過您正在部署的代碼的多少控制。工作角色是雲服務術語,雖然他們仍然受支持,但通常不推薦使用,因爲列出的其他服務的部署,可伸縮性和管理要好得多。

Web作業和函數都使用相同的WebJobs SDK爲您提供從隊列,Blob或調度執行觸發的負載。它們都在應用程序服務計劃中運行(並與其一起),但函數是「無服務器」的,因爲您不需要查看或管理Web應用程序服務實例,並且可以部署源代碼 - 它將被編譯部署。

Service Fabric是一個完全不同的野獸,它提供彈性和低延遲狀態(數據)複製,但也可以作爲無狀態批處理執行的選項。它會在封面下創建一個虛擬機節點集羣,它將爲您管理彈性和部署,理解和管理還有點多,但對於大規模有狀態服務等應用來說非常有用。

邏輯應用程序具有不同的執行/收費模型,並且可根據需要進行擴展,但更多的是協調工作流和連接組件,而不是實際執行操作。 IE瀏覽器。處理隊列中的數據可能是一個組件,需要在某個地方運行 - 可能在您還託管的API應用程序或Azure功能中。

0

Logic Apps專爲您描述的確切場景而設計。

您應該能夠創建一個邏輯應用程序,在服務總線隊列中觸發新消息。然後,Logic Apps本身支持與SQL /隊列/ REST,甚至本地文件系統,XML驗證,X12/AS2/EDI以及內置函數(如解析JSON/XML,條件,循環等等。對於邏輯應用程序當前不支持的更高級操作,您可以使用Azure函數擴展Logic應用程序。