使用Azure WebJobs或Azure功能来托管与sharepoint在线列表集成的控制台应用程序

问题描述 投票:-1回答:1

我正在开发一个sharepoint在线团队网站集。我想定义一个每天运行的工作来执行以下操作: -

  1. 与SharePoint REST API集成,以获取具有截止日期=今天的特定列表中的所有项目。
  2. 发送电子邮件给sharepoint组。

现在,当我在SharePoint内部部署这样的任务时,我使用这种方法: -

1-我创建一个.net控制台应用程序,它与SharePoint REST API集成,获取相关项目,最后使用.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-将控制台应用程序放在sharepoint服务器上。

3-使用Windows任务调度工具,我创建一个每天执行控制台应用程序的任务(例如,上午1点00分)。

所以现在在sharepoint online我不知道如何托管我的控制台应用程序+如何安排它?我已经在控制台应用程序中转换了所有代码,以使用客户端模块而不是服务器端模块。但我的问题是托管和安排控制台应用程序。我主要在Azure中阅读这些选项: -

  1. WebJobs
  2. Azure功能

但我不确定哪个appraoch更好?以及哪两个工具模仿使用Windows任务调度程序调度控制台应用程序的appraoch?现在我读了这篇关于Azure功能的文章https://anthonychu.ca/post/azure-functions-scheduled-executables/,但我对function.jso文件做了什么感到困惑?并且不确定我是否可以使用这些工具运行标准控制台应用程序?还有一个UI来配置触发器调度,如在Windows任务调度程序的情况下?谢谢

azure sharepoint azure-functions azure-webjobs
1个回答
1
投票

正如Jason所说,功能是webjobs的继承者。 Azure Functions完全是为了实现WebJobs SDK的核心目的,将其作为服务托管,并使其易于使用其他语言。我们还在这里介绍了“无服务器”概念,因为这样做很有意义 - 我们知道我们的SDK如何扩展,因此我们可以为您做智能化的事情。而webjobs是在Web App中部署的后端控制台应用程序。

但我对function.json文件做了什么感到困惑?

包含该函数的配置元数据的function.json文件。一个函数只能有一个触发器绑定,并且可以有多个输入/输出绑定。以下是每种触发类型的示例。你可以参考这个wiki

要将控制台应用程序部署到Azure WebJobs,您可以参考此article来压缩您的控制台应用程序并上传它。要设置schedule trigger,您需要在控制台应用程序中添加settings.job

{
    "schedule": "0 */15 * * * *"
}

对于Azure功能的部署控制台应用程序,您可以参考article,因为您提供了timetrigger绑定。

{
  "bindings": [
    {
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "*/15 * * * * *",
      "runOnStartup": false
    }
  ]
}

所以我建议使用Azure功能来托管。

© www.soinside.com 2019 - 2024. All rights reserved.