Create your first durable function in C# (Создание устойчивой функции: C#)

Устойчивые функции — это расширение Функции Azure, которое позволяет записывать функции с отслеживанием состояния в бессерверной среде. Расширение автоматически управляет состоянием, создает контрольные точки и перезагружается.

Из этой статьи вы узнаете, как с помощью Visual Studio Code создать и протестировать устойчивую функцию hello world в локальной среде. Эта функция организовывает и объединяет в цепочку вызовы других функций. Затем вы можете опубликовать код функции в Azure. Эти инструменты доступны как часть расширения Функций Azure в Visual Studio Code.

Снимок экрана: в окне Visual Studio Code показана устойчивая функция.

Необходимые компоненты

Для работы с этим руководством:

  • Установка Visual Studio Code.

  • Установите следующие расширения Visual Studio Code:

  • Убедитесь, что используется последняя версия Azure Functions Core Tools.

  • Для работы Устойчивых функций требуется учетная запись хранения Azure. Вам требуется подписка Azure.

  • Убедитесь, что установлен пакет SDK для .NET Core 3.1 или более поздней версии.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Создание локального проекта

В этом разделе вы используете Visual Studio Code. чтобы создать локальный проект Функций Azure.

  1. В Visual Studio Code нажмите клавишу F1 (или CTRL/CMD+SHIFT+P), чтобы открыть палитру команд. В палитре команд найдите и щелкните Azure Functions: Create New Project....

    Снимок экрана: окно создания проекта функции.

  2. Выберите расположение пустой папки для проекта и нажмите кнопку Выбрать.

  3. Следуйте инструкциям и укажите следующее:

    Prompt значение Описание
    Select a language for your function app project (Выберите язык для проекта приложения-функции) C# Создание локального проекта "Функции C#".
    Выбор версии Функции Azure версии 4 Этот параметр отображается, только если вы еще не установили Core Tools. В этом случае Core Tools устанавливается при первом запуске приложения.
    Выбор шаблона для первой функции проекта Пока пропустить
    Выбор способа открытия проекта Открыть в текущем окне Повторно открывает Visual Studio Code в выбранной папке.

При необходимости Visual Studio Code устанавливает Azure Functions Core Tools. Кроме того, создается проект приложения-функции в папке. Проект будет содержать файлы конфигурации host.json и local.settings.json.

Добавление функций в приложение

В следующих действиях используется шаблон для создания устойчивого кода функции в проекте.

  1. В палитре команд найдите и щелкните Azure Functions: Create Function....

  2. Следуйте инструкциям и укажите следующее:

    Prompt значение Описание
    Выбор шаблона для функции DurableFunctionsOrchestration Создание оркестрации Устойчивых функций
    Provide a function name (Укажите имя функции) HelloOrchestration Имя класса, в котором создаются функции
    Provide a namespace (Укажите пространство имен) Company.Function Пространство имен для созданного класса
  3. Когда Visual Studio Code предложит выбрать учетную запись хранения, щелкните Выбрать учетную запись хранения. Следуя инструкциям, укажите следующие сведения, чтобы создать новую учетную запись хранения в Azure:

    Prompt значение Описание
    Выбор подписки имя вашей подписки Выберите подписку Azure.
    Выберите учетную запись хранения Создать учетную запись хранения
    Ввод имени новой учетной записи хранения уникальное имя Имя учетной записи хранения для создания
    Выберите группу ресурсов уникальное имя Имя создаваемой группы ресурсов
    Выбор расположения region Выберите ближайший регион.

В проект добавляется класс, содержащий новые функции. Visual Studio Code также добавляет строку подключения учетной записи хранения в файл local.settings.json и ссылку на пакет NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask в файл проекта .csproj.

Откройте новый файл HelloOrchestration.cs, чтобы просмотреть содержимое. Эта устойчивая функция является простым примером цепочки функции со следующими методами.

Способ FunctionName Description
RunOrchestrator HelloOrchestration Управляет устойчивой оркестрацией. В этом случае оркестрация запускается, создает список и добавляет в него результат трех вызовов функций. Список возвращается после завершения вызовов трех функций.
SayHello HelloOrchestration_Hello Функция возвращает hello. Это функция, которая содержит управляемую бизнес-логику.
HttpStart HelloOrchestration_HttpStart Функция, активируемая HTTP-запросом, которая запускает пример оркестрации и возвращает ответ состояния проверки.

Созданный проект функции и устойчивую функцию можно протестировать на локальном компьютере.

Локальное тестирование функции

Основные инструменты службы "Функции Azure" позволяют запускать проекты функций Azure на локальном компьютере разработчика. Вам будет предложено установить эти инструменты при первом запуске функции из Visual Studio Code.

  1. Чтобы протестировать функцию, установите точку останова в коде функции действия SayHello и нажмите клавишу F5 для запуска проекта приложения-функции. Выходные данные основных инструментов отображаются на панели Terminal (Терминал).

    Примечание.

    Дополнительные сведения об отладке см. в статье Диагностика Устойчивых функций.

  2. На панели Terminal (Терминал) скопируйте URL-адрес конечной точки функции, активируемой HTTP-запросом.

    Снимок экрана: окно с локальными выходными данными в Azure.

  3. Отправьте запрос HTTP POST к конечной точке URL-адреса, используя средство наподобие Postman или cURL.

    Полученный ответ является начальным результатом функции HTTP, что сообщает об успешном начале работы устойчивой оркестрации. Это еще не конечный результат оркестрации. Ответ включает несколько полезных URL-адреса. Теперь запросите состояние оркестрации.

  4. Скопируйте значение URL-адреса для statusQueryGetUri, вставьте его в адресную строку браузера и выполните запрос. Кроме того, вы можете воспользоваться Postman для отправки запроса GET.

    Запрос будет запрашивать экземпляр оркестрации для состояния. Вы должны получить итоговый ответ, который показывает, что экземпляр выполнен и содержит выходные данные или результаты устойчивой функции. Он выглядит следующим образом:

    {
        "name": "HelloOrchestration",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Чтобы остановить отладку, нажмите клавиши SHIFT+F5 в Visual Studio Code.

Убедившись, что функция выполняется правильно на локальном компьютере, опубликуйте проект в Azure.

Вход в Azure

Прежде чем создавать ресурсы Azure или публиковать приложение, необходимо войти в Azure.

  1. Если вы не выполнили вход, щелкните значок Azure на панели действий. Затем в области Ресурсы выберите Вход в Azure….

    Снимок экрана с окном входа в Azure в VS Code.

    Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, нажмите кнопку "Создать учетную запись Azure...". Учащиеся могут выбрать создание учетной записи Azure для учащихся....

  2. В ответ на запрос в браузере выберите учетную запись Azure и войдите в нее с учетными данными Azure. Если вы создаете новую учетную запись, вы можете выполнить вход после ее создания.

  3. Выполнив вход, можно закрыть новое окно браузера. Подписки, принадлежащие учетной записи Azure, отображаются на боковой панели.

Создание приложения-функции в Azure

В этом разделе показано, как создать приложение-функцию и связанные ресурсы в подписке Azure.

  1. Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.

    Создание ресурса в подписке Azure

  2. Введите следующие сведения по соответствующим запросам:

    Prompt Выбор
    Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка.
    Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure.
    Выберите стек сред выполнения Выберите версию языка, которая запускалась локально.
    Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами.

    Расширение показывает на панели Azure: журнал действий состояние отдельных ресурсов по мере их создания в Azure.

    Журнал создания ресурсов Azure

  3. После завершения создания в вашей подписке будут созданы приведенные ниже ресурсы Azure. Имена ресурсов основаны на имени приложения-функции.

    • группу ресурсов — логический контейнер связанных ресурсов;
    • Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
    • Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
    • План службы приложений, который определяет базовый узел для приложения-функции.
    • Экземпляр Application Insights, подключенный к приложению-функции, который отслеживает использование функций в приложении.

    После создания приложения-функции и применения пакета развертывания отобразится уведомление.

    Совет

    По умолчанию ресурсы Azure, необходимые для приложения функции, создаются на основе указанного имени приложения функции. По умолчанию они также создаются в той же новой группе ресурсов, что и приложение-функция. Если необходимо настроить имена этих ресурсов или повторно использовать существующие ресурсы, вам нужно опубликовать проект с дополнительными параметрами создания.

Развертывание проекта в Azure

Внимание

Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.

  1. В области ресурсов действия Azure найдите только что созданный ресурс приложения-функции, щелкните ресурс правой кнопкой мыши и выберите "Развернуть в приложении-функции...".

  2. При появлении запроса на перезапись предыдущих развертываний выберите "Развернуть ", чтобы развернуть код функции в новом ресурсе приложения-функции.

  3. После завершения развертывания выберите Просмотреть выходные данные, чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, щелкните значок колокольчика в правом нижнем углу, чтобы снова просмотреть его.

    Снимок экрана с окном

Тестирование функции в Azure

  1. Скопируйте URL-адрес HTTP-триггера на панели Output (Выходные данные). URL-адрес для вызова функции, активируемой HTTP-запросом, должен быть в следующем формате:

    https://<functionappname>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Вставьте этот URL-адрес HTTP-запроса в адресную строку браузера. Вы должны получить тот же ответ о состоянии, что и раньше при использовании опубликованного приложения.

Следующие шаги

Вы создали и опубликовали устойчивое приложение-функцию C# с помощью Visual Studio Code.

Из этой статьи вы узнаете, как использовать Visual Studio 2022 для локального создания и тестирования устойчивой функции hello world. Эта функция организовывает и объединяет в цепочку вызовы других функций. Затем вы опубликуете код функции в Azure. Эти инструменты доступны как часть рабочей нагрузки Azure для разработки в Visual Studio 2022.

Снимок экрана: в окне Visual Studio 2019 показана устойчивая функция.

Необходимые компоненты

Для работы с этим руководством:

  • Установите Visual Studio 2022. Убедитесь, что рабочая нагрузка Разработка для Azure также установлена. Visual Studio 2019 также поддерживает разработку устойчивых функций, но пользовательский интерфейс и выполняемые шаги различаются.

  • Убедитесь, что эмулятор Azurite установлен и работает.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Создание проекта приложения-функции

Шаблон Функций Azure создает проект, который затем можно опубликовать в приложении-функции в Azure. позволяющее группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими.

  1. В Visual Studio в меню Файл выберите Создать>Проект.

  2. В диалоговом окне Создание проекта выполните поиск по functions, выберите шаблон Функции Azure и нажмите кнопку Далее.

    Снимок экрана: диалоговое окно нового проекта для создания функции в Visual Studio.

  3. Введите имя проекта и нажмите кнопку ОК. Имя проекта должно быть допустимым в качестве пространства имен C#, поэтому не используйте символы подчеркивания, дефисы и символы, не являющиеся буквенно-цифровыми.

  4. В разделе Дополнительная информация используйте настройки, указанные в таблице под изображением.

    Снимок экрана: диалоговое окно создания нового приложения Функций Azure в Visual Studio.

    Параметр Предлагаемое значение Description
    Рабочая роль Функций .NET 6 Создает проект функции, который поддерживает .NET 6 и среду выполнения Функций Azure 4.0. Дополнительные сведения см. в статье Выбор целевых версий среды выполнения Функций Azure.
    Function Нет значения Создает пустое приложение-функцию.
    Учетная запись хранения Эмулятор хранения Учетная запись хранения необходима для управления состоянием устойчивой функции.
  5. Нажмите кнопку Создать, чтобы создать проект пустой функции. Этот проект содержит файлы базовой конфигурации, необходимые для выполнения функций.

Добавление функций в приложение

В следующих действиях используется шаблон для создания устойчивого кода функции в проекте.

  1. Щелкните правой кнопкой мыши проект в Visual Studio и выберите Добавить>Новая функция Azure.

    Снимок экрана: добавление новой функции.

  2. Убедитесь, что в меню добавления выбрано Функция Azure, введите имя своего файла C# и нажмите кнопку Добавить.

  3. Выберите шаблон Оркестрация устойчивых функций и нажмите кнопку Добавить.

    Снимок экрана: выбор устойчивого шаблона.

Новая устойчивая функция добавлена в приложение. Откройте новый файл с расширением .cs, чтобы просмотреть содержимое. Эта устойчивая функция является простым примером цепочки функции со следующими методами.

Способ FunctionName Description
RunOrchestrator <file-name> Управляет устойчивой оркестрацией. В этом случае оркестрация запускается, создает список и добавляет в него результат трех вызовов функций. Список возвращается после завершения вызовов трех функций.
SayHello <file-name>_Hello Функция возвращает hello. Это функция, которая содержит управляемую бизнес-логику.
HttpStart <file-name>_HttpStart Функция, активируемая HTTP-запросом, которая запускает пример оркестрации и возвращает ответ состояния проверки.

Созданный проект функции и устойчивую функцию можно протестировать на локальном компьютере.

Локальное тестирование функции

Основные инструменты службы "Функции Azure" позволяют запускать проекты функций Azure на локальном компьютере разработчика. Вам будет предложено установить эти инструменты при первом запуске функции из Visual Studio.

  1. Чтобы проверить работу функции, нажмите клавишу F5. Если будет предложено, примите запрос от Visual Studio на скачивание и установку основных инструментов решения "Функции Azure" (CLI). Кроме того, вам может понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.

  2. Скопируйте URL-адрес функции из выходных данных среды выполнения функций Azure.

    Снимок экрана: локальная среда выполнения Azure.

  3. Вставьте URL-адрес HTTP-запроса в адресную строку браузера и выполните запрос. Ниже показан ответ в браузере на локальный запрос GET, возвращаемый функцией:

    Снимок экрана: окно браузера с вызовом statusQueryGetUri.

    Полученный ответ является начальным результатом функции HTTP, что сообщает об успешном начале работы устойчивой оркестрации. Это еще не конечный результат оркестрации. Ответ включает несколько полезных URL-адреса. Теперь запросите состояние оркестрации.

  4. Скопируйте значение URL-адреса для statusQueryGetUri, вставьте его в адресную строку браузера и выполните запрос.

    Запрос будет запрашивать экземпляр оркестрации для состояния. Вы должны получить итоговый ответ, который выглядит, как показано ниже. В этих выходных данных показано, что экземпляр выполнен и содержит выходные данные или результаты устойчивой функции.

    {
        "name": "Durable",
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2019-11-02T07:07:40Z",
        "lastUpdatedTime": "2019-11-02T07:07:52Z"
    }
    
  5. Нажмите клавиши SHIFT+F5, чтобы остановить отладку.

Убедившись, что функция выполняется правильно на локальном компьютере, опубликуйте проект в Azure.

Публикация проекта в Azure

Перед публикацией проекта убедитесь, что в вашей подписке Azure есть приложение-функция. Можно создать приложение-функцию непосредственно в Visual Studio.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать. Для параметра Целевой объект выберите Azure, а затем нажмите Далее.

    Снимок экрана окна публикации.

  2. Выберите Приложение-функция Azure (Windows) для параметра Определенная цель, чтобы создать приложение-функцию, которое выполняется в Windows, а затем щелкните Далее.

    Снимок экрана окна публикации с определенным целевым объектом.

  3. В разделе Экземпляр функции выберите Создать экземпляр Функций Azure.

    Снимок экрана: создание нового экземпляра приложения-функции.

  4. Создайте новый экземпляр, используя значения, указанные в следующей таблице.

    Параметр значение Описание
    Имя Глобально уникальное имя Имя, которое однозначно идентифицирует новое приложение-функцию. Используйте это имя или введите новое. Допустимые символы: a-z, 0-9 и -.
    Подписка Ваша подписка Подписка Azure, которую нужно использовать. Используйте эту подписку или выберите новую из раскрывающегося списка.
    Группа ресурсов Имя группы ресурсов Группа ресурсов, в которой вы хотите создать приложение-функцию. Выберите "Создать" , чтобы создать новую группу ресурсов. Вы также можете выбрать существующую группу ресурсов из раскрывающегося списка.
    Тип плана Потребление При публикации проекта в приложении-функции, которое работает в плане потребления, вы платите только за выполнение приложения-функции. Другие планы размещения связаны с дополнительными расходами.
    Местонахождение Расположение Службы приложений. Выберите расположение в ближайшем к вам регионе или регионе, ближайшем к другим службам, к которым обращаются ваши функции.
    Хранилище Azure Учетная запись хранения общего назначения Учетная запись хранения Azure — обязательный ресурс для среды выполнения Функций. Выберите Создать, чтобы настроить учетную запись хранения общего назначения. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранения.
    Application Insights Экземпляр приложения Аналитика Необходимо включить интеграцию приложений Аналитика для приложения-функции. Выберите "Создать ", чтобы создать новый экземпляр в новой или существующей рабочей области Log Analytics. Вы также можете выбрать существующий экземпляр.

    Снимок экрана диалогового окна

  5. Нажмите кнопку Создать, чтобы создать приложение-функцию и связанные с ним ресурсы в Azure. Состояние операции создания ресурсов отображается в окне внизу слева.

  6. Рядом с полем Экземпляр Функций установите флажок Запустить из файла пакета. Приложение-функция развертывается с помощью Zip Deploy с включенным режимом Run-From-Package (Выполнение из пакета). Развертывание из ZIP-файла — это рекомендуемый метод развертывания для проекта функций, так как он обеспечивает более высокую производительность.

    Снимок экрана создания профиля Finish.

  7. Нажмите кнопку Готово и на странице "Публикация" выберите Опубликовать, чтобы развернуть пакет с файлами проекта в новом приложении-функции в Azure.

    После завершения развертывания корневой URL-адрес приложения-функции в Azure отображается на вкладке Опубликовать.

  8. На вкладке "Публикация" в разделе "Размещение" выберите Открыть на портале Microsoft Azure. В результате на портале Azure будет открыт новый ресурс Azure для приложения-функции.

    Снимок экрана сообщения об успешной публикации.

Тестирование функции в Azure

  1. Скопируйте базовый URL-адрес приложения-функции на странице профиля Публикация. Замените часть localhost:port URL-адреса, который использовался при локальной проверке функции новым базовым URL-адресом.

    URL-адрес для вызова триггера HTTP устойчивой функции должен быть в следующем формате:

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. Вставьте этот URL-адрес HTTP-запроса в адресную строку браузера. Вы должны получить тот же ответ о состоянии, что и раньше при использовании опубликованного приложения.

Следующие шаги

Visual Studio использовалась для создания и публикации устойчивого приложения-функции C#.