【发布时间】:2018-09-06 17:42:37
【问题描述】:
我正在开发一个 sharepoint 在线团队网站集。我想定义一个每天运行的工作来执行以下操作:-
- 与 SharePoint REST API 集成,以获取特定列表中到期日期 = 今天的所有项目。
- 向共享点组发送电子邮件。
现在,当我在本地 SharePoint 中处理此类任务时,我习惯使用这种方法:-
1- 我创建了一个与 SharePoint REST API 集成的 .net 控制台应用程序,获取相关项目,最后使用 .NET WebClient 发送电子邮件,如下所示:-
//do the checks then send an email to the related group
using (MailMessage myMailMessage = new MailMessage())
{
SPOutboundMailServiceInstance smtpServer = currentsite.WebApplication.OutboundMailServiceInstance;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer.Server.Address);
myMailMessage.IsBodyHtml = true;
myMailMessage.Subject = subject;
myMailMessage.Body = body;
smtp.Send(myMailMessage);
//code goes here..
}
2- 将控制台应用程序放在共享点服务器上。
3- 使用 Windows 任务调度器工具,我创建了一个每天执行控制台应用程序的任务(例如@1:00 am)。
所以现在在 sharepoint online 中,我不确定如何托管我的控制台应用程序以及如何安排它?。我已经将控制台应用程序中的所有代码转换为使用客户端模块而不是服务器端模块。但我的问题是关于托管和调度控制台应用程序。我主要在 Azure 中阅读了这些选项:-
- 网络作业
- Azure 函数
但我不确定哪种方法更好?这两个工具中的哪一个模仿了使用 Windows 任务调度程序调度控制台应用程序的方法?现在我阅读了这篇关于 Azure 功能的文章 https://anthonychu.ca/post/azure-functions-scheduled-executables/,但我对 function.jso 文件的作用感到困惑?不确定我是否可以使用这些工具运行标准控制台应用程序?是否还有一个 UI 来配置触发计划,如 Windows 任务计划程序的情况?
谢谢
【问题讨论】:
-
我会使用带有计时器触发器的函数应用程序。我建议在 Azure 门户中创建一个函数应用,然后看看你能走多远。它非常直观。
-
@JasonP 你能解释一下为什么你会选择函数而不是网络作业吗?
-
函数是 webjobs 的继承者。他们扩展了功能,例如更多触发器和按次付费。我认为没有理由为新项目使用网络作业。
标签: azure sharepoint azure-functions azure-webjobs