0

我有一个关于存储帐户和应用服务的静态网站的概念性问题。

我的团队开发了一个 Angular10 + ASP.NET Core (API) 应用程序。我们的前端(Angular10)只使用我们的 API,所以我们的应用程序的可用性取决于前端+后端两者的可用性(我们的 API 不会被任何其他应用程序使用)。我们没有任何延迟问题或要求,因为我们的最终用户都在同一地区。我们的应用程序必须通过 HTTPS 和特定名称 (CNAME) 使用。

当我们将应用程序部署到 Azure 时,我的团队决定使用商店帐户作为 Angular 10 的静态网站和作为我们应用程序后端的 API 的 AppService 单独部署它。据我在 MS 文档上看到的(这里是相关文章):

“应用服务静态 Web 应用是 Azure 存储静态网站托管的绝佳替代品,也适用于不需要 Web 服务器来呈现内容的情况”

因为我们目前需要一个 AppService 来呈现内容,所以我有一些问题:

  • 该应用程序有效,但是,是一种正确的架构方法还是最好只将我们的应用程序发布到 AppService?
  • 是否有任何安全/成本相关/任何主题使 StaticWebSite + AppService 方法比仅部署 AppService 更好?

我认为这种方法没有给我们任何便利或优势。取而代之的是,我们必须在 Azure 上配置更多东西以通过 SSL 连接,并为我们的应用程序和 AppService 部署提供 CNAME。

请问,你能给我你的意见吗?

提前致谢

此致

路易斯

4

2 回答 2

2

最好的方法是将 SPA 和 API 分开并分别托管。这会在应用程序之间创建松散耦合,从而为您在性能、可伸缩性和部署方面提供更大的灵活性。

.NET Core API 可以托管在 Azure App Service 上,或者甚至可以重构为作为一组无服务器 Azure Functions 运行?将其转换为函数将允许自动缩放并可能降低成本,因为您只需在函数运行时付费。这取决于 API 方法实际在做什么。

SPA 可以作为存储帐户 blob 容器中的静态网站托管,并且通过映射到它的 CDN 终结点,您可以将其设置为在自定义域上使用 HTTPS 公开 SPA。或者,您可以使用 Azure 静态 Web 应用程序(尽管这仍处于预览阶段)。这简化了 SPA 的部署,因为它将连接到您的代码存储库,并在将更改提交到存储库时为您构建和部署 SPA。

这当然意味着配置两个单独的 CNAME 子域记录(假设您希望 API 具有自定义域名),但这没什么大不了的,最终可以更清晰地分离关注点。

静态虚拟主机https ://docs.microsoft.com/en-gb/azure/storage/blobs/storage-blob-static-website-how-to

Azure 静态 Web 应用程序https ://docs.microsoft.com/en-gb/azure/static-web-apps/overview

使用 Azure CDN 进行静态托管https ://www.red-gate.com/simple-talk/cloud/azure/static-hosting-with-azure-blob-storage-and-azure-cdn/

于 2021-04-03T11:02:04.070 回答
0

托管选项取决于您的要求。

在存储帐户上使用静态网站的用例是需要在服务器端操作或处理数据,只需调用相关的托管 Azure 服务(如 Azure 认知服务)或利用托管在 Azure Functions 上的您自己的 Web 服务器。

https://azure.microsoft.com/en-us/blog/static-websites-on-azure-storage-now-generally-available/

你是静态网站调用 Azure WebApp API,所以你应该有 Azure WebApp 计划。

Azure WebApp 计划可以托管 API 和静态网站。这种情况的好处是:

  • 降低成本,因为您可以在同一个 Azure WebApp 计划中托管多个 WebApp。
  • 与存储帐户相比,Azure WebApp 为您提供更多托管功能
  • 静态网站和 API 都可以以相同的方式实现部署
于 2021-03-23T11:50:23.250 回答