【问题标题】:Creating Azure resources from Net Core web app locks interface从 Net Core Web 应用程序锁定界面创建 Azure 资源
【发布时间】:2020-03-30 16:41:57
【问题描述】:

简而言之,创建以编程方式定义的Azure 资源(VM's、ResourceGroups 等)的最佳方法是什么,而不会锁定 Web 应用程序的界面,因为其中一些操作需要吗?

更详细: 我有一个Net Core Web 应用程序,可以手动添加客户。添加后,它会自动为Azure 创建一些资源。但是,我注意到我的接口在这些操作期间被“锁定”了。将这些操作从 Web 应用程序中分离出来的相对简单的方法是什么?我曾考虑使用Service BusAzure Relay 发送触发器并触发Azure Function。但是,在我看来,所有这些资源都会返回一些东西,而我的 Web 应用程序正在等待它。为此,我需要一个“发送并忘记方法”。只需发送触发器来创建这些资源,暂时不要理会返回值,继续使用应用程序。

如果“发送和返回”方法也适用于我的网络应用程序,那也没问题。

欢迎提出任何建议!

【问题讨论】:

    标签: c# azure asp.net-core-mvc azure-functions azureservicebus


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多