我有一个Web作业,它在收到队列消息后运行并更新数据库。此消息通常作为ASP.NET MVC应用程序中某个进程的一部分触发。
现在我想在UI上添加一个按钮,以便用户可以为要运行的作业排队消息,但我想为触发作业的用户更新视图,并使用azure的结果webjob。
我最初想过WebHooks,但这不是webhooks的设计目标。我能想到的唯一另一件事就是SignalR。
这不是在WebJob中运行的过长的任务,但是有一个很好的理由它以这种方式解耦,我想使用相同的代码而不重复。
我还可以轮询数据库以查看数据是否已更新,但我并不是真的想这样做,因为如果没有更新数据,我真的不知道作业已经完成。轮询是解决这个问题的错误方法。
所以从本质上讲,会发生以下情况: 用户请求更新 - >更新请求已添加到队列 - > WebJobs触发和处理请求 - >使用结果更新用户的页面。
答案 0 :(得分:2)
用户请求更新 - >更新请求已添加到队列 - > WebJobs触发和处理请求 - >用结果
更新用户的页面
SignalR是一个可用于开发实时Web功能的库,您可以调用hub方法从WebJob更新Web应用程序UI。如果您想将数据保存/更新到SQL数据库并向浏览器广播更新通知,则可以使用SignalR and SQL Dependency构建实时通知解决方案。此外,这个博客解释了如何communicate from an Azure WebJob to your website with SignalR,请参考它。