0

在 azure 中是否可能出现以下情况?:

我需要构建一个应用程序,该应用程序将根据用户提交进行一些繁重的处理,并将结果作为文件返回给用户。

  1. 第 1 步:用户通过 REST 调用将数据提交到我的端点(asp.net web api)
  2. 第 2 步:Web 角色返回报告的 url(尚未创建!)
  3. 第 3 步:我的端点将工作传递给工作角色并完成繁重的工作(2-3 分钟)
  4. 第 4 步:Worker 角色结束作业并创建报告文件并将其上传到 Azure 存储 Blob
  5. 第 X 步:如果可能的话,我需要知道:在第 2 步,用户拨打电话后,我需要立即将 URL 返回到尚未创建的报告中(我不希望用户等待分钟或运行超时问题)。我知道该报告文件将是唯一的,因此我需要知道是否可以将 url 生成到尚未创建的 report123.docx 的 azure blob 存储?但是,在报告准备好 2-3 分钟后,用户将能够使用步骤 2 中生成的 url 访问该报告。

例如:用户拨打电话后,服务将响应:这是您的报告的网址,2 分钟后返回...

4

1 回答 1

5

当然,这是可能的。我现在可以创建很多 blob 存储 URL --- http://account1.blob.core.windows.net/Reports/john1.pdf , http://account2.blob.core.windows.net/Reports/jane3 .pdf , ...

我假设你知道要使用的存储帐户名称、容器和最终 blob 名称?如果是,只需将其以 URL 的形式返回给用户(您可以使用存储客户端 DLL 中的 GetBlobReference 来执行此操作)。您甚至可以在该 blob 中放置一个临时虚拟报告,上面写着“报告未完成,稍后再检查”之类的内容,然后在报告完成后替换该 blob。

但是我可以建议一个更好的方法吗?将您的 Web API 更改为异步。您的客户将提交工作,您将返回一个 ID。然后,客户端将调用另一个 API 来检查作业状态,一旦作业完成,他们将返回 URL。查看 Azure Blob 服务的 Copy Blob API(或任何 Azure 服务管理 API)作为参考点。

于 2013-08-19T16:19:40.800 回答