SharePoint O365中的后台任务/计时器作业以及Azure提供程序托管的应用程序

时间:2014-10-10 20:53:09

标签: azure asynchronous sharepoint-2013 csom sharepoint-apps

我正在为Azure(O365)构建一个提供商托管的应用程序,该应用程序托管在Azure中。我通过CSOM完成所有逻辑,更具体地说是使用MVC Web项目。目前,在AJAX调用控制器操作后,应用程序执行了一些品牌逻辑。

如果我的层次结构中有很多子网站,这可能需要很长时间才能执行,这很糟糕,因为虽然应用程序仍然会处理我的请求,但是我调用该操作的页面会阻止我从任何完成任务的反馈。这当然是因为请求的状态直接与调用页面中该请求的回调相关联。这也意味着有人可以很好地启动请求,刷新页面,然后再次启动它,因为我无法判断先前的请求是否仍在执行。此外,2个不同的用户可以启动相同的请求,从而导致同时执行该请求的逻辑。这两种情况都可能导致服务器端工件上出现一些令人讨厌的并发修改错误。

所以,我需要的是找到一种方法来检查某个请求是否已经在运行,如果不是这样,那么启动一个有状态和异步的请求。我能想到的最好的例子就是SharePoint O365自己的长期运行任务机制:时间密集型任务(例如安装应用程序或创建新的网站集)可以从页面启动,任何后续刷新或访问该页面都将将任务显示为当前正在运行,甚至有时提供取消它的可能性(例如在应用安装中)。状态也会自行更新(例如网站集创建完成时),我不确定是客户端轮询的结果还是其他一些我不了解的机制。

我见过一些似乎很有希望的解决方案,比如使用Windows Services directly on Azurethis poor man's timer job,虽然似乎没有一个能满足我上面列出的所有要求和/或似乎有助于实现我想做的事情。我觉得Timer Jobs可能有所帮助,但我想就这种情况提出建议。

感谢您的输入

1 个答案:

答案 0 :(得分:0)

尝试使用Azure辅助角色。使用CSOM和SharePoint提供商托管应用程序与租户完全控制权限的侧面加载。 Side-loading部分使您的工作人员可以读/写SharePoint Online。

通过/_layouts/appregnew.aspx和_layouts / appinv.aspx进行侧载。