2013-01-07 93 views
4

在我當前的公司,我們正在對Azure進行一些研究,將我們的一些舊系統移到雲中。我們有以下系統,都安裝在客戶所在地。在蔚藍色的web角色中運行多個項目

數據庫(SqlServer的) 處理服務器(winform應用程序) 各種客戶端(WinForm的應用程序)

我們所希望做的是處理服務器轉換成一個ASP.NET Web API,並創建一個新的工作調度程序作爲某種長時間運行的過程,它會輪詢數據庫並將請求發送到處理服務器。

這很好,但我們不確定最好的方法來做到這一點。

我們很高興爲服務器使用作業調度程序和ASP.NET Web API的服務,但我們不知道管理安裝的最佳方式。

我們想要做的是爲每個大客戶安排一個WebRole和調度程序和服務器,以及一個WebRole和多個調度程序和服務器同時運行。

因此,對於這個問題,

這實際上是可能的嗎?你可以在Web角色中運行多個項目嗎?

回答

3

Web角色本質上是一個帶有一些代碼腳手架的Windows Server虛擬機。你可以運行任何可以通過無交互MSI/xcopy /等安裝的東西。您有啓動腳本以及從代碼安裝的能力(在OnStart()事件處理中)。

Web角色和工作者角色的不同主要在於IIS的激活。否則,你可以把它們當作等價物。

定義獨立角色(網絡或工作者)的好處:每個角色都有自己的大小和數量。例如,您可以爲您的前端設置一堆Small Web角色實例,也可以爲一個或兩個Large實例設置一些計算密集型任務。不過,真的,沒有什麼能阻止你將所有東西裝入一個角色。只是現在一切都會以鎖步方式進行擴展。

由於安裝無法完全自動化,因此SQL Server不適合Web/Worker角色模型。這更適合於虛擬機(允許您構建虛擬機並保存它,隨時運行,完全構建)。虛擬機上的更多信息here。如果你走這條路線,你需要直接從你的web角色訪問你的數據庫。你可以用這個Virtual Network

有關SQL的最後一件事:Windows Azure SQL Database是數據庫即服務,您不需要構建任何內容:只需啓用它,設置最大大小並開始使用它即可。雖然它沒有SQL Server的全部功能,但它涵蓋了絕大多數功能,並且可以擴展到每個數據庫150GB(並且提供超出此範圍的分片)。您只需支付Windows Azure SQL的存儲容量;沒有運行它的服務器的成本,並且不需要維護數據庫服務器。

0

您可以使用WebRole作爲您的API和WorkerRole作爲您的調度程序。如果需要,您可以對兩者使用不同的大小和實例數,並將它們保留在同一個VisualStudio解決方案中。

我會避免使用WebRole作爲調度程序。

+1

除了激活IIS(可以通過命令行啓用/禁用)之外,web和worker角色之間確實沒有實際區別。比方說,如果你想運行Tomcat,即使你正在託管一個Web服務器,你也會選擇工作者角色。同樣,您可以在Web角色實例中輕鬆運行調度程序任務,甚至可以在端口80/443上刪除輸入端點(如果需要的話)。 –