【问题标题】:Using Azure WebJobs or Azure Functions to host my console application which integrates with sharepoint online lists使用 Azure WebJobs 或 Azure Functions 托管与共享点在线列表集成的控制台应用程序
【发布时间】:2018-09-06 17:42:37
【问题描述】:

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

  1. 与 SharePoint REST API 集成,以获取特定列表中到期日期 = 今天的所有项目。
  2. 向共享点组发送电子邮件。

现在,当我在本地 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 中阅读了这些选项:-

  1. 网络作业
  2. Azure 函数

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

【问题讨论】:

  • 我会使用带有计时器触发器的函数应用程序。我建议在 Azure 门户中创建一个函数应用,然后看看你能走多远。它非常直观。
  • @JasonP 你能解释一下为什么你会选择函数而不是网络作业吗?
  • 函数是 webjobs 的继承者。他们扩展了功能,例如更多触发器和按次付费。我认为没有理由为新项目使用网络作业。

标签: azure sharepoint azure-functions azure-webjobs


【解决方案1】:

正如 Jason 所说,Functions 是 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 Function,您可以参考article,因为您提供了时间触发器绑定。

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

所以我推荐使用 Azure Function 来托管。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多