2016-02-02 46 views
0

我有兩個應用程序給我的客戶端,一個是web應用程序,用戶在其中安排一些操作,另一個是windows服務,每3分鐘運行一次,並執行計劃任務和電子郵件給客戶端,兩者彼此獨立工作。我選擇哪一個在Azure VM或Azure Worker角色中運行服務?

在Azure的VM既以前應用託管

最近我將我的應用程序到Azure的Web角色來實現可擴展性。

現在我正在爲Windows服務實現工作者角色。但我有一些困惑的是客戶端web項目需要的可擴展性,所以我轉換Web項目到蔚藍Web角色

  1. 但在使用Windows Service作爲Azure的工作者角色是更好裏面虛擬機中運行的服務是什麼情況?

  2. 我是否繼續在Azure VM中運行服務?

+0

看看azure網站和azure webjobs。然後,不再需要管理虛擬機。網絡/工作者角色可以被替換。 –

回答

1
  1. 但在使用Windows Service作爲Azure的工作者角色是更好裏面虛擬機中運行的服務是什麼情況?

有用於移動Windows服務的Azure的輔助角色幾個好處 - 恕我直言,排在前三位的分別是:

  1. Azure的工作者角色是PaaS(平臺即服務) - 您提供了一個運行代碼的「平臺」(一個Windows Server虛擬機,但是從您的虛擬機抽象出來) - 無需管理底層基礎架構操作系統,網絡,磁盤等。這意味着您可以專注於你的代碼,以及如何工作/擴展/執行等,而不必擔心虛擬機是否是啓動並運行。此外,底層Azure Fabric將爲您管理故障,如果底層硬件發生故障,則啓動一個新的工作實例。

  2. Azure的工作者角色給你規模的好處 - 因爲他們在Azure PaaS的平臺上運行,你的代碼「包」可以擴展到通過Azure的門戶網站與幾個鼠標點擊多個實例。擴展可以是隊列長度(如果您從隊列中接收消息)或基於平均CPU使用率自動(由底層Azure結構觸發);或者,您可以手動或按照設定的時間表進行縮放(例如,「我們在一夜之間做了大量處理,因此在一天的其餘時間將工作人員數量從凌晨1點增加到上午6點,然後返回到2點」)。見https://azure.microsoft.com/en-gb/documentation/articles/cloud-services-how-to-scale/的更多信息,縮放工作者角色(又名「雲服務」。)

  3. 類似API的Windows服務 - 對於Azure的工作者角色的API是幾乎完全一樣的Windows服務中暴露 - 您有一個OnStart(),OnStop()運行()方法^允許您輕鬆地將現有的Windows服務移植到工作者角色,但最小的麻煩。

^好了,這些可能不太是正確的爲一兩個月左右自從我上次與WR的工作,我不記得確切的接口,但你的想法;-)

是否繼續在Azure VM中運行服務?

讓我回答你的問題(我的重點)的背景下,問題:

我有兩個應用程序爲我的客戶,一個是Web應用程序,其中用戶安排一些動作,另外一個是windows服務,其中每3分鐘運行一次並執行計劃任務,並且通過電子郵件發送給客戶端

我認爲(恕我直言),你需要考慮開發的雲,而不是傳統的發展模式。我從中讀到的是,你有一個web應用程序,它將某些東西寫入持久性存儲(可能是數據庫表);然後您有第二個服務(您希望遷移到Azure工作者角色)以特定時間間隔輪詢持久性存儲,檢測是否有任何新客戶通過電子郵件發送電子郵件。

如果我們重新架構這爲雲,我會保持工作者角色的搭配,但做到以下幾點:

  1. Web的應用程序將消息發佈到隊列以指示客戶端需要通過電子郵件發送 - 此消息可能包含他們的姓名,電子郵件地址以及可能進入電子郵件消息主體(如果需要)的一些數據。

  2. 工作者角色將輪詢此隊列中的消息。對於收到的每封郵件,工作人員角色都會通過您首選的電子郵件提供商發送基於郵件內容的電子郵件(希望他們有一個很好的.Net API - 請勿使用原始SMTP!)。電子郵件成功發送後,工作人員角色將從隊列中刪除消息。

這種方法既可擴展又可重複 - 一種真正的雲架構!如果您有興趣使用隊列方法,Azure存儲隊列或Azure服務總線隊列可以在此工作,則可以使用此功能。這聽起來像你有簡單的排隊要求,因此,存儲隊列將是一個完美的選擇。看看他們的比較:https://azure.microsoft.com/en-gb/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/

希望這有助於!

+0

這回答我的問題,謝謝。 – Mahendran

相關問題