Вы уже, вероятно, слышали о функциях Azure Functions и их богатых возможностях, причем не только для SharePoint. Если вдруг нет, то в этой статье я расскажу об общих способах их использования.
Azure Functions — решение для удобного запуска небольших фрагментов программного кода, или функций, в «облаке». Вы можете просто подготовить код, необходимый для решения актуальной задачи, не утруждая себя построением целых приложений или инфраструктуры для них. Благодаря этим функциям разработка становится еще более продуктивной, вы можете использовать язык программирования по своему выбору, такой как C#, F#, Node.js, Python или PHP. Платите только за время выполнения вашего кода и доверьте задачу масштабирования Azure. С помощью Azure Functions можно проектировать приложения без сервера на Microsoft Azure.
Функции Azure — почти безупречное решение для обработки данных, интеграции систем, работы с Интернетом вещей (IoT) и построения простых API-интерфейсов. Любой тип запланированной задачи или процесс, запускаемый из события, может быть построен с использованием Azure Functions.
Функции Azure Functions могут применяться с помощью базовых шаблонов для сценариев всех типов. Компания Microsoft предоставляет ряд основных шаблонов:
- Blob Trigger — обработка BLOB-объектов хранилища Azure;
- EventHub Trigger — ответ концентратору событий Azure;
- Generic Webhook — обработка HTTP-запросов Webhook;
- GitHub Webhook — ответ на события GitHub;
- HTTP Trigger — активация выполнения кода с использованием HTTP-запроса;
- Queue Trigger — ответ на сообщения из очереди хранилища Azure;
- ServiceBus Topic Trigger — обработка сообщений из очереди и выполнение служб Azure или локальных;
- Timer Trigger — выполнение задач очистки и пакетных задач по расписанию.
Как использовать Azure Function вместе с SharePoint
Функции Azure Functions не подключаются напрямую к SharePoint как таковому, поскольку это другая служба внутри Azure. Вы можете воспользоваться обработчиком в запросах и предоставить вызываемый по протоколу HTTP URL-адрес, который может действовать как инициатор, выполняющий любой подготовленный вами программный код. Особенно хорошо, что после преобразования кода в функции Azure Functions его можно вызвать с помощью любого языка программирования или клиентской инфраструктуры.
Как создать Azure Function
Первый необходимый шаг — создать приложение Azure Function App. Это специальный вид веб-приложения Azure Web App, ориентированный на размещение функций Azure. Перейдите по адресу: https://portal.azure.com, щелкните New и выполните поиск по Function app («Приложение-функция»), как показано на экране 1.
Экран 1. Местоположение приложения Azure Function App |
После перехода к базовому списку функциональных приложений выберите Function app и нажмите кнопку Create (экран 2).
Экран 2. Создание приложения Azure Function App |
Необходимо ввести значения свойств. Я воспользовался своей подпиской DEV/TEST (экран 3).
Экран 3. Ввод значений свойств |
Процесс создания приложений-функций может занять несколько минут, но после его завершения вы получите оповещение. По завершении щелкните по нему, чтобы увидеть основные параметры функции (экран 4).
Экран 4. Основные параметры функции |
Чтобы добавить фактическую функцию, нажмите кнопку «+» рядом с левой навигационной ссылкой. Затем вы получите запрос, позволяющий выбрать тип, который вы хотите создать (экран 5).
Экран 5. Выбор типа функции |
Мы выберем вариант Webhook + API и язык CSharp, а затем перейдем по ссылке Create this function» (Создайте эту функцию»). После создания функции вы получите показанный на экране 6 пример программного кода.
Экран 6. Пример программного кода |
Чтобы увидеть, что делает этот базовый код, нажмите кнопку Run («Выполнить»), и вы получите представление о том, как работают эти функции. Вы обнаружите, что можете изменить тип взаимодействия с POST на GET, получив массу новых возможностей. Тогда вы сможете отправить текст запроса (экран 7).
Экран 7. Изменение типа взаимодействия с POST на GET |
В итоге name («имя») просто получит значение Liam, и при выполнении оно будет возвращено как результат (экран 8).
Экран 8. Результат запроса |
На самом деле мы будем обращаться к этому URL-адресу откуда-то из другого места, поэтому для подключения необходим действительный URL-адрес. В верхней части экрана щелкните ссылку с именем Get function URL («Получить URL-адрес функции»). Прямой вызов в браузере не возымеет действия. Будет возвращено лишь сообщение Please pass a name on the query string or in the request body («Передайте имя в строке запроса или в тексте запроса»). Чтобы обойти это препятствие, добавьте к URL-адресу: «&name=James$20%Brown».
https://site-af.azurewebsites.net/api/HttpTriggerCSharp1? code=MYyccnLn88e4RJkiTyukfZGufQQxTByp8ATyty3rcTrnwOZj/4 EriQ==&name=James%20%Brown
В результате возвращается приветственное сообщение с присоединенным текстом James Brown, как показано на экране 9.
Экран 9. Получение действительного URL-адреса |
Располагая базовой функцией, мы можем настроить SharePoint для ее использования. Функции необходимо предоставить доступ через Azure Active Directory, а затем можно задействовать веб-перехватчики SharePoint, добавляя новую функцию в список SharePoint с помощью модели подписки. Веб-перехватчики могут обрабатывать события, соответствующие изменениям элементов списка для следующих событий:
- ItemAdded;
- ItemUpdated;
- ItemDeleted;
- ItemCheckedOut;
- ItemCheckedIn;
- ItemUncheckedOut;
- ItemAttachmentAdded;
- ItemAttachmentDeleted;
- ItemFileMoved;
- ItemVersionDeleted;
- ItemFileConverted.
Веб-перехватчики SharePoint предоставляют простой конвейер уведомлений, поэтому ваше приложение может узнавать об изменениях в списке SharePoint без опроса службы. Кроме того, подготовив код, который просто получает уведомление, сохраняет нужные данные в очереди и обрабатывает их позднее, вы можете строить очень сложные решения.
Подписки можно создавать с помощью базового SharePoint API, публикуя установленные значения. Вы можете воспользоваться приведенными ниже примерами из центра разработки Microsoft Office.
Создать подписку:
https://dev.office.com/sharepoint/docs/apis/webhooks/lists/create-subscription
Обновить подписку:
https://dev.office.com/sharepoint/docs/apis/webhooks/lists/update-subscription
Удалить подписку:
https://dev.office.com/sharepoint/docs/apis/webhooks/lists/delete-subscription
Получить подписку
https://dev.office.com/sharepoint/docs/apis/webhooks/lists/get-subscription
Существует множество областей для использования функций Azure и перехода к методам разработки с уведомлениями без сервера. Но помните, что функции Azure с использованием веб-перехватчиков не должны быть «сверхтяжелыми» механизмами программирования. Конечный пользователь более всего ценит гибкость реагирования.