我需要每隔50秒左右向數據庫寫入一些數據。它類似於在後臺運行並默默執行其工作的Windows服務。在我的情況下,啓動和停止不是一種選擇,因爲我需要將少量先前插入的數據存儲在內存中。使用Windows Azure或AWS時,最佳解決方案是什麼?Windows Azure上的長時間運行(或永遠)任務
謝謝。
我需要每隔50秒左右向數據庫寫入一些數據。它類似於在後臺運行並默默執行其工作的Windows服務。在我的情況下,啓動和停止不是一種選擇,因爲我需要將少量先前插入的數據存儲在內存中。使用Windows Azure或AWS時,最佳解決方案是什麼?Windows Azure上的長時間運行(或永遠)任務
謝謝。
使用Windows Azure,您可以選擇Web或Worker角色(基本上都是Windows 2008 Server R2或SP2),並具有某種類型的定時事件,正如@Lucifure所建議的。您也可以運行Quartz.net等調度程序,或利用Windows Azure隊列或服務總線隊列在特定時間顯示消息。但是:您不能在給定角色實例中執行「永久」任務,因爲定期重啓虛擬機實例(例如,每月主機操作系統維護)。通過關閉角色,您會收到通知,您可以在Stopping()
或OnStop()
中處理這些關閉通知。如果您有多個實例,則可以使用調度程序或隊列來確保事件每隔50秒左右觸發一次,並在多個實例中進行處理(但在任何給定時間只能處理一個實例)。
要保留您的內存信息,一個想法是將該信息存儲在緩存中。你有兩種選擇:
關於緩存的更多信息是here。
關於Quartz.net和Windows Azure,有幾個StackOverflow答案,如this one。
在Windows Azure上,可以使用Worker角色,它可以執行此操作。它可以是一個簡單的while循環。
試試這篇文章的介紹。 http://www.c-sharpcorner.com/uploadfile/40e97e/windows-azu-creating-and-deploying-worker-role/
您可以設置System.Threading.Timer每隔50秒觸發一次,並在事件發生時進行工作。