2012-07-20 92 views
1

我們正在將Web應用程序移至Azure,並希望對我們的策略提供一些反饋意見。 Azure對我們來說是新的,所以我們要確保我們正在走向正確的道路。請注意,我們正在使用VS 2010.將Web應用程序移植到Azure的策略

我們目前的應用程序有兩個部分:1)用戶界面的標準Web應用程序和2)在服務器上運行的Windows應用程序。 Windows應用程序每2分鐘喚醒一次,查找SQL表中的任何新記錄,處理它們然後睡覺。 Windows應用程序還告訴我們處理的記錄數量,處理時間等,以便我們可以看到系統的總體健康狀況。這兩個應用程序讀取/寫入服務器上存儲的文件。 (是的,這應該可能是一項服務,但我們希望接口能夠快速看到整體健康狀況,我們有一個服務來檢查接口是否正常運行,如果發生故障,請重新啓動它。)

移植Web應用程序到Azure非常簡單,我們在VS中對它進行了一些測試,沒有任何問題。我們需要關於Windows應用程序的一些建議並設置/訪問這些文件。

這是我們的戰略。所有的建議表示讚賞。

1 - 爲Windows應用程序創建一個輔助角色。 2 - 將此工作角色設置爲啓動項目。 3 - 輔助角色將創建Azure雲驅動器(用於文件訪問)並將驅動器盤符傳遞給Web應用程序。我們將在onstart內建立連接。 4 - 確保工作人員角色是持久性的,以便我們不會丟失雲驅動器。

另外兩個問題:

1 - 看來,工人的角色可以有一個用戶界面,但也許我們誤解的東西。如果我們嘗試將Windows應用程序添加到解決方案中,我們會收到大量錯誤。我們也嘗試創建一個工作者角色並將其設置爲Windows窗體應用程序,但是立即產生了一個關於他們不是「主要」方法的錯誤,這是對我們的警告標誌,我們不應該這樣做。我們在這裏錯過了什麼?

2 - 如果worker角色設置爲啓動項目,是否需要啓動web應用程序,或者一旦worker角色完成其啓動處理,它將自動啓動?

+0

工作角色具有一個界面,但不具有用戶界面。 – Paparazzi 2012-07-20 11:39:37

+0

提供了答案,但我不知道你的意思是讓工作者角色持久。 – 2012-07-20 12:30:18

回答

2

Web和Worker角色基本上是Windows Server 2008 SP2/R2 VM,Web角色具有IIS配置並正在運行。您擁有的實際的webrole.cs和workerrole.cs代碼只是在Web角色/輔助角色實例啓動時運行的腳手架。您還擁有可以處理提升特權任務的啓動腳本(例如修改註冊表和安裝軟件)。

關於您的策略:您不需要必須爲爲您的Windows服務創建一個輔助角色,但如果您覺得會出現性能問題,則應該考慮它。你可以選擇在你的web角色中運行它 - 只需從OnStart()或Run()中啓動線程即可。您需要確保只有一個調度程序正在運行。有許多關於在Windows Azure中運行調度程序的SO問題,例如this one,以及一些討論使用quartz.net的問題,例如this

關於正在共享的雲端驅動器:一個角色無法與另一個角色共享驅動器號。對於雲端硬盤,只能有一名作者。實際上,每個角色實例都需要自己的雲驅動器。這是一個您可能想要考慮用於普通文件存儲的blob存儲的領域。

根據您提到的沒有UI的工作角色:雖然Visual Studio不便於將Web應用程序添加到工作角色,但您可以使用可以這樣做。更重要的是:由於worker角色只是一個Windows Server虛擬機,因此沒有任何東西阻止您運行任何數量的替代Web服務器(如tomcat,jetty和jboss)。您只需要通過啓動腳本或從OnStart()啓動流程來運行這些流程。您還需要根據需要創建輸入端點(例如http端口80,https 443)。您可以輕鬆地以Web角色運行這些服務器(並運行任何其他類型的支持tcp,udp,http或https的端口服務器)。

關於啓動項目:您的雲計劃將成爲啓動項目。 Web和輔助角色實例並行啓動。

相關問題