我工作的一个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项目,但这可能是时间问题。