从 Net Core Web 应用锁界面创建 Azure 资源

Creating Azure resources from Net Core web app locks interface

简而言之,创建以编程方式定义的 Azure 资源(VMResourceGroups 等)的最佳方法是什么,而无需锁定网络应用程序的界面,因为其中一些操作需要多长时间?

更详细: 我有一个 Net Core 手动添加客户的 Web 应用程序。添加后,它会自动为 Azure 创建一些资源。但是,我注意到在这些操作期间我的接口是 'locked'。从 Web 应用程序中分离这些操作的相对简单的方法是什么?我曾想过使用 Service BusAzure Relay 发送触发器并触发 Azure Function。但是,在我看来,所有这些资源 return 都回来了,我的网络应用程序正在等待它。为此,我需要 'send and forget method'。只需发送触发器来创建这些资源,暂时不要理会 return 值,继续应用程序。

如果 'send and return' 方法也适用于我的网络应用程序,那也很好。

欢迎提出任何建议!

您需要将工作排队到 运行 后台,然后 return 立即执行操作。最简单的方法是创建托管服务。有几种不同的方法可以做到这一点:

  1. 使用 queued background service 并实际排队要在您的操作中完成的工作。
  2. 只需将所需信息写入数据库 table、redis 存储等,然后使用 timed service 按计划执行工作。

在任何一种情况下,您也可以考虑将其拆分为 worker service(本质上,一个单独的应用程序仅由托管服务组成,而不是 运行将其与您的网络应用程序)。这使您可以独立扩展服务,并使您的 Web 应用程序免受服务可能遇到的问题的影响。

设置服务并安排工作后,您只需要通过某种方式让用户知道工作何时完成。一种典型的方法是使用 SignalR 来允许服务器向客户端通知进度更新或成功通知。但是,您也可以只做一些简单的事情,例如在一切准备就绪后向用户发送电子邮件。