Использование веб-заданий Azure или функций Azure для размещения моего консольного приложения, которое интегрируется с онлайн-списками sharepoint - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю над коллекцией сайтов онлайн-команды 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, я создаю задачу, которая ежедневно выполняет консольное приложение (например, в 01:00).

так что теперь в sharepoint online я не уверен, как я могу разместить свое консольное приложение + как я могу его запланировать? . я уже преобразовал весь свой код в консольном приложении, чтобы использовать модуль на стороне клиента вместо модуля на стороне сервера. но мой вопрос о хостинге и планировании консольного приложения. я читал об этих опциях в основном в Azure: -

  1. WebJobs
  2. Функции Azure

но я не уверен, за какой оценкой лучше следовать? и какой из 2 инструментов имитирует метод планирования консольного приложения с помощью планировщика задач Windows ?. сейчас я читаю эту статью https://anthonychu.ca/post/azure-functions-scheduled-executables/ о функциях Azure, но я запутался в том, что делает файл function.jso? и не уверен, смогу ли я запустить стандартное консольное приложение с помощью этих инструментов? также есть ли пользовательский интерфейс для настройки расписания запуска, как в случае планировщика задач Windows? Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Как сказал Джейсон, функции являются преемниками веб-заданий. Функции Azure - это основная цель SDK WebJobs, размещение его в качестве службы и упрощение работы с другими языками. Мы также представляем здесь концепцию «без сервера», потому что это имело большой смысл - мы знаем, как масштабируется наш SDK, поэтому мы можем сделать интеллектуальные вещи для вас. В то время как веб-задания являются консольным приложением, которое развертывается в Web-приложении.

но я запутался в том, что делает файл function.json?

Файл function.json, содержащий метаданные конфигурации для функции. Функция может иметь только одну привязку триггера и может иметь несколько привязок ввода / вывода. Ниже приведены примеры для каждого из типов триггера. Вы можете обратиться к этому вики .

Чтобы развернуть консольное приложение в Azure WebJobs, вы можете обратиться к этой статье , чтобы заархивировать консольное приложение и загрузить его. Чтобы установить расписание триггера , вам нужно добавить settings.job в консольное приложение.

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

Для развертывания консольного приложения в Azure Function вы можете обратиться к статье , поскольку вы указали привязку к триггеру времени.

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

Поэтому я рекомендую использовать функцию Azure для размещения.

...