我工作的一個ASP.NET MVC 5 Web應用程序,託管在Azure上,目前有以下設置:Azure上的ASP.NET MVC:結合或分離Web角色?
- Web角色1:UI中的ASP.NET MVC項目:多單頁面應用程序與AngularJS和引導
- Web角色2:一個ASP.NET MVC Web API項目:包含API控制器,處理所有授權,數據訪問(EntityFramework 6),緩存等。API控制器REST操作稱爲異步通過AngularJS來自網絡角色中的用戶界面1
這些Web角色合併到1 Azure Cloud服務,包括用於數據存儲的SQL Azure數據庫。 Web角色2使用角色內緩存來緩存大多數使用的實體。使用雲服務的原因是角色內緩存在雲服務內的所有Web角色2實例之間共享。
我最初將UI從實際的「工作」中分離出來的兩個Web角色的原因,是通過緩存和數據處理不會干擾呈現UI來優化性能。此外,在需要時,我可以爲Azure中的任何角色配置額外的實例,並且可以指定最大高速緩存大小以用於角色2,而無需從角色1獲取內存。這一切實際上運行良好。
現在對於這個問題......維護和更新這兩個角色可能是一種痛苦。另外,客戶端可能會有點棘手,CORS HTTP POST在所有(移動)瀏覽器上都不能很好地運行,因此我想將2個應用程序合併到1個Web角色的1:1項目中,同時將MVC和MVC網絡API的東西。這將執行以及單獨的設置?我可以將Web角色配置爲在Azure中使用更多的實例/內存。這會和自己的實例有兩個獨立的角色一樣好嗎,特別是在高負載情況下,從客戶端到服務器進行大量異步調用?
附註:我正在玩ASP.NET 5(vNext)和MVC 6,它消除了'正常'MVC控制器和Web API控制器之間的差異。這也誘使我將2個獨立的項目組成1個ASP.NET 5項目。 Azure SDK/Visual Studio不支持在Azure Cloud Service中部署ASP.NET 5項目,但這可能是時間問題。