【问题标题】:Which Azure service to use for batchjobs that invokes webservices and persists the response哪个 Azure 服务用于调用 Web 服务并保留响应的批处理作业
【发布时间】:2017-11-01 12:53:46
【问题描述】:

我已经拥有的:

  • .NET 框架项目上的一个 asp.net 核心,使用 DocumentDB 作为其存储
  • 一个 Azure WebJob,它侦听我的 Web 项目将消息写入其中以进行电子邮件发送和其他处理的队列
  • 在 Azure 上成功部署和运行

这一切都很好。除了 Web 项目之外,还有一个模型和数据类库将应用程序分成多个层。

目前,Web 应用程序调用 Web 服务,并将结果(一个非常大的 xml 文档)保存在缓存中,并在缓存中保存 24 小时。这并不理想,因为第一次需要很长时间。我想要的是一个夜间批处理作业,它调用此 Web 服务,然后将响应存储(覆盖)到持久存储中,然后 Web 应用程序将使用该持久存储。

我对为此使用哪个 Azure“服务”感到困惑。到目前为止,我开始的是另一个 WebJob,其想法是使用相同的 DocumentDb 存储来保持每晚的 Web 服务响应。但是,我已经在 Web 应用程序(数据类库)中设置了所有数据库存储库等,是否可以只从 WebJob 中引用该项目而不必在 WebJob 中重写一些相同的代码?

为此 WebJob 使用其他一些 Azure 存储选项是否更好?像表存储,Blob 存储等?基本上,从 Web 服务接收到的数据的结构非常简单。对于每个项目,我只需要存储一个 url、一个标题、描述和唯一的产品 ID。显然,Web 应用程序也需要通过简单地查找产品 ID 来访问这个存储空间,并且永远不会写入这个存储空间。

此外,我不完全确定是否有比 Azure WebJobs 更好的替代方法来完成这项任务,但这似乎是正确的方法。

感谢任何反馈。我通常只是对 Azure 提供的所有不同服务感到困惑/不知所措。

【问题讨论】:

    标签: web-services azure architecture azure-storage azure-cosmosdb


    【解决方案1】:

    我会回答你的一些问题...

    网络作业可以很好地完成这项任务。如果您有一个总是在添加另一个网络作业的网络服务似乎是个好主意。如果您的 Web 服务并非始终开启,您可以查看 Azure Functions。 Azure Functions 有时称为 webjobs 2.0。

    对于文档数据库中的存储,文件大小限制为 2MB(给予或索取)。所以,你必须在那里找到另一个解决方案。我认为 Azure Tables 对存储大小也有限制,因此您必须将文件拆分为更小的块。因此,推荐的解决方案是使用 Azure Blob。

    你会在这个答案中找到一些关于 Blobs vs Tables vs SQL 的好读物 - Getting started with Azure storage: Blobs vs Tables vs SQL Azure

    【讨论】:

    • 谢谢。我不能将每个产品保存为文档,以绕过存储限制吗?这会产生什么后果?基本上,当用户访问网站时,应用程序需要检索一次产品信息,具体取决于用户选择的产品 ID。
    • 我重读了你的问题。当然,您可以这样做,或者您可以使用 Azure 表作为键/值存储。如果您已经拥有 Document DB 连接并为此付费,请继续使用它。构建一些简单和评估的东西。如果它适合你的需要就坚持下去,否则就改变......
    • 非常感谢并为这个显然非常广泛的问题道歉。如果不删除有关我的设置的信息,我真的不知道如何使它更具体!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多