【发布时间】:2015-04-01 08:01:58
【问题描述】:
我正在开发一个托管在 Azure 上的 ASP.NET MVC 5 Web 应用程序,该应用程序当前具有以下设置:
- Web 角色 1:用于 UI 的 ASP.NET MVC 项目:主要是带有 AngularJS 和引导程序的单页应用程序
- Web 角色 2:一个 ASP.NET MVC Web Api 项目:包含 API 控制器,处理所有授权、数据访问(EntityFramework 6)、缓存等。API 控制器 REST 操作通过 AngularJS 从 Web 的 UI 调用异步角色 1
这些 Web 角色组合在 1 个 Azure 云服务中,包括用于数据存储的 SQL Azure 数据库。 Web 角色 2 使用角色内缓存来缓存最常用的实体。使用 Cloud 服务的原因是角色内缓存在 Cloud 服务内部的 Web 角色 2 的所有实例之间共享。
我将 UI 与 2 个 Web 角色的实际“工作”分开的最初原因是为了优化性能,因为缓存和数据处理不会干扰 UI 的呈现。此外,当需要时,我可以为 Azure 中的任何角色配置额外的实例,并且可以指定用于角色 2 的最大缓存大小,而无需从角色 1 中获取内存。这一切都运行良好。
现在的问题...维护和更新这两个角色可能会很痛苦。此外,客户端可能有点棘手,因为 CORS HTTP POST 在所有(移动)浏览器中通过 https 等都无法正常工作。所以我正在考虑将 2 个应用程序组合成 1 个 Web 角色中的 1:1 项目,同时使用 MVC和 MVC web api 的东西。这会像单独的设置一样执行吗?我可以配置 Web 角色以在 Azure 中使用更多实例/内存。这是否与拥有 2 个单独的角色和他们自己的实例一样好,尤其是在从客户端到服务器进行大量异步调用的高负载时?
附带说明:我正在使用 ASP.NET 5 (vNext) 和 MVC 6,它消除了“普通”MVC 控制器和 Web API 控制器之间的差异。这也诱使我将我的 2 个独立项目变成 1 个 ASP.NET 5 项目。 Azure SDK/Visual Studio 不支持在 Azure 云服务中部署 ASP.NET 5 项目,但这可能只是时间问题。
【问题讨论】:
标签: asp.net asp.net-mvc angularjs azure