我已经拥有的:
- 一个基于.net框架的asp.net核心项目,使用DocumentDB作为其存储
- 一个Azure WebJob,它侦听我的web项目写入消息的队列,用于发送电子邮件和进行其他处理
- 已在Azure上成功部署并运行
这一切都很好。除了web项目之外,还有一个模型和数据类库,用于将应用程序分为多个层。
目前,web应用程序调用web服务,并将结果(一个相当大的xml文档)保存在缓存中,并在那里保存24小时。这并不理想,因为第一次需要很长时间。相反,我想要的是一个夜间批处理作业,它调用此web服务,然后将响应存储(覆盖)到持久存储中,然后web应用程序将使用该持久存储。
我不知道该使用哪种Azure"服务"。到目前为止,我开始的是另一个WebJob,其想法是使用相同的DocumentDb存储来保持每晚的web服务响应。然而,我已经在web应用程序(数据类库)中设置了所有的数据库存储库等,是否可以从WebJob中引用此项目,而不必在WebJob中重写一些相同的代码?
将其他一些Azure存储选项用于此WebJob是否更好?像表存储、Blob存储等?基本上,从web服务接收的数据的结构非常简单。对于每个项目,我只需要存储一个url、一个标题、描述和唯一的产品id。显然,web应用程序也需要通过简单地查找产品id来访问此存储,而从不写入此存储。
此外,我不完全确定是否有比Azure WebJobs更好的替代方案来完成这项任务,但这似乎是正确的方法。
如有任何反馈,我们将不胜感激。我通常只是对Azure提供的所有不同服务感到困惑/不知所措。
我将回答您的一些问题。。。
网络作业适用于此任务。如果你有一个总是在运行的网络服务,那么添加另一个网络作业似乎是个好主意。如果您的Web服务不总是打开的,您可以查看Azure功能。Azure函数有时被称为webjobs 2.0。
对于文档数据库中的存储,有2MB的文件大小限制(给予或接受)。所以,你必须在那里找到另一个解决方案。我认为Azure表对存储大小也有限制,因此您必须将文件拆分为更小的块。所以,推荐的解决方案是使用Azure Blob。
在这个关于Blob与Tables与SQL的答案中,你会发现一些不错的解读-Azure存储入门:Blob与Tables与SQL Azure