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

Устойчивые функции — это расширение Функций Azure, которое позволяет писать функции с отслеживанием состояния в беcсерверной среде.Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless environment. Расширение автоматически управляет состоянием, создает контрольные точки и перезагружается.The extension manages state, checkpoints, and restarts for you.

Примечание

Это руководство по Устойчивым функциям 1.x.This is a tutorial for Durable Functions 1.x. Чтобы начать работу с Устойчивыми функциями 2.x, ознакомьтесь с документацией по версиям Устойчивых функций.To use Durable Functions 2.x, see the Durable Functions versions documentation.

Из этой статьи вы узнаете, как использовать Visual Studio 2019 для локального создания и тестирования устойчивой функции hello world.In this article, you learn how to use the Visual Studio 2019 to locally create and test a "hello world" durable function. Эта функция организовывает и объединяет в цепочку вызовы других функций.This function orchestrates and chains-together calls to other functions. Затем вы опубликуете код функции в Azure.You then publish the function code to Azure. Эти инструменты доступны как часть рабочей нагрузки Azure для разработки в Visual Studio 2019.These tools are available as part of the Azure development workload in Visual Studio 2019.

Выполнение устойчивых функций в Azure

предварительные требованияPrerequisites

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

  • Установите Visual Studio 2019.Install Visual Studio 2019. Убедитесь, что рабочая нагрузка Разработка для Azure также установлена.Make sure that the Azure development workload is also installed. Visual Studio 2017 также поддерживает разработку Устойчивых функций, но пользовательский интерфейс и выполняемые шаги при этом отличаются.Visual Studio 2017 also supports Durable Functions development, but the UI and steps differ.

  • Убедитесь, что эмулятор службы хранилища Azure установлен и запускается.Verify you have the Azure Storage Emulator installed and running.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

Создание проекта приложения-функцииCreate a function app project

Шаблон Функций Azure создает проект, который затем можно опубликовать в приложении-функции в Azure.The Azure Functions template creates a project that can be published to a function app in Azure. позволяющее группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими.A function app lets you group functions as a logical unit for easier management, deployment, scaling, and sharing of resources.

  1. В Visual Studio в меню Файл выберите Создать > Проект.In Visual Studio, select New > Project from the File menu.

  2. В диалоговом окне Add a new project (Добавление нового проекта) выполните поиск по строке functions, выберите шаблон Azure Functions (Функции Azure) и нажмите кнопку Далее.In the Add a new project dialog, search for functions, choose the Azure Functions template, and select Next.

    Диалоговое окно нового проекта для создания функции в Visual Studio

  3. Введите имя проекта и нажмите кнопку OK.Type a Project name for your project, and select OK. Имя проекта должно быть допустимым в качестве пространства имен C#, поэтому не используйте символы подчеркивания, дефисы и другие символы, не являющиеся буквенно-цифровыми.The project name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. В окне Создание нового приложения Функций Azure укажите параметр, приведенный в таблице после рисунка.In Create a new Azure Functions Application, use the settings specified in the table that follows the image.

    Диалоговое окно "Создание нового приложения Функций Azure" в Visual Studio

    ПараметрSetting Рекомендуемое значениеSuggested value DescriptionDescription
    ВерсияVersion Функции Azure 2.0Azure Functions 2.0
    (.NET Core)(.NET Core)
    Создает проект функции, использующий среду выполнения Функций Azure версии 2.0, которая поддерживает .NET Core.Creates a function project that uses the version 2.0 runtime of Azure Functions, which supports .NET Core. Функции Azure 1.0 поддерживают платформу .NET Framework.Azure Functions 1.0 supports the .NET Framework. Дополнительные сведения см. в статье Выбор целевых версий среды выполнения Функций Azure.For more information, see How to target Azure Functions runtime version.
    ШаблонTemplate EmptyEmpty Создает пустое приложение-функцию.Creates an empty function app.
    Учетная запись храненияStorage account Эмулятор храненияStorage Emulator Учетная запись хранения необходима для управления состоянием устойчивой функции.A storage account is required for durable function state management.
  5. Нажмите кнопку Создать, чтобы создать проект пустой функции.Select Create to create an empty function project. Этот проект содержит файлы базовой конфигурации, необходимые для выполнения функций.This project has the basic configuration files needed to run your functions.

Добавление функций в приложениеAdd functions to the app

В следующих действиях используется шаблон для создания устойчивого кода функции в проекте.The following steps use a template to create the durable function code in your project.

  1. Щелкните правой кнопкой мыши проект в Visual Studio и выберите Добавить > Новая функция Azure.Right-click the project in Visual Studio and select Add > New Azure Function.

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

  2. Убедитесь, что в меню добавления выбрано Функция Azure, введите имя своего файла C# и нажмите кнопку Добавить.Verify Azure Function is selected from the add menu, type a name for your C# file, and then select Add.

  3. Выберите шаблон Оркестрация Устойчивых функций и нажмите кнопку ОК.Select the Durable Functions Orchestration template and then select Ok

    Выбор устойчивого шаблона

Примечание

В настоящее время этот шаблон создает устойчивую функцию, используя более раннюю версию 1.x расширения.This template currently creates a durable function using an older 1.x version of the extension. Сведения о том, как обновить Устойчивые функции до версии 2.x, см. в статье Версии расширения "Устойчивые функции".See the Durable Functions Versions article for information about how to upgrade to the newer 2.x versions of Durable Functions.

Новая устойчивая функция добавлена в приложение.A new durable function is added to the app. Откройте новый файл .cs, чтобы просмотреть содержимое.Open the new .cs file to view the contents. Эта устойчивая функция является простым примером цепочки функции со следующими методами.This durable function is a simple function chaining example with the following methods:

МетодMethod FunctionNameFunctionName DescriptionDescription
RunOrchestrator <file-name> Управляет устойчивой оркестрацией.Manages the durable orchestration. В этом случае оркестрация запускается, создает список и добавляет в него результат трех вызовов функций.In this case, the orchestration starts, creates a list, and adds the result of three functions calls to the list. Список возвращается после завершения вызовов трех функций.When the three function calls are complete, it returns the list.
SayHello <file-name>_Hello Функция возвращает hello.The function returns a hello. Это функция, которая содержит управляемую бизнес-логику.It is the function that contains the business logic that is being orchestrated.
HttpStart <file-name>_HttpStart Функция, активируемая HTTP-запросом, которая запускает пример оркестрации и возвращает ответ состояния проверки.An HTTP-triggered function that starts an instance of the orchestration and returns a check status response.

Созданный проект функции и устойчивую функцию можно протестировать на локальном компьютере.Now that you've created your function project and a durable function, you can test it on your local computer.

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

Основные инструменты службы "Функции Azure" позволяют запускать проекты функций Azure на локальном компьютере разработчика.Azure Functions Core Tools lets you run an Azure Functions project on your local development computer. Вам будет предложено установить эти инструменты при первом запуске функции из Visual Studio.You are prompted to install these tools the first time you start a function from Visual Studio.

  1. Чтобы проверить работу функции, нажмите клавишу F5.To test your function, press F5. Если будет предложено, примите запрос от Visual Studio на скачивание и установку основных инструментов службы Функции Azure (CLI).If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Кроме того, вам может понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

  2. Скопируйте URL-адрес функции из выходных данных среды выполнения функций Azure.Copy the URL of your function from the Azure Functions runtime output.

    Локальная среда выполнения Azure

  3. Вставьте URL-адрес HTTP-запроса в адресную строку браузера и выполните запрос.Paste the URL for the HTTP request into your browser's address bar and execute the request. Ниже показан ответ в браузере на локальный запрос GET, возвращаемый функцией:The following shows the response in the browser to the local GET request returned by the function:

    Ответ функции localhost в браузере

    Полученный ответ является начальным результатом функции HTTP, что сообщает об успешном начале работы устойчивой оркестрации.The response is the initial result from the HTTP function letting us know the durable orchestration has started successfully. Он еще не конечный результат оркестрации.It is not yet the end result of the orchestration. Ответ включает несколько полезных URL-адреса.The response includes a few useful URLs. Теперь запросите состояние оркестрации.For now, let's query the status of the orchestration.

  4. Скопируйте значение URL-адреса для statusQueryGetUri и, вставив его в адресную строку панели браузера, выполните запрос.Copy the URL value for statusQueryGetUri and pasting it in the browser's address bar and execute the request.

    Запрос будет запрашивать экземпляр оркестрации для состояния.The request will query the orchestration instance for the status. Необходимо получить возможный ответ, который выглядит следующим образом.You should get an eventual response that looks like the following. Этот результат показывает, что экземпляр выполнен и содержит выходные данные или результаты устойчивой функции.This output shows us the instance has completed, and includes the outputs or results of the durable function.

    {
        "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, чтобы остановить отладку.To stop debugging, press Shift + F5.

Убедитесь, что функция правильно работает на локальном компьютере. Затем опубликуйте проект в Azure.After you have verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

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

Перед публикацией проекта убедитесь, что в вашей подписке Azure есть приложения-функция.You must have a function app in your Azure subscription before you can publish your project. Можно создать приложение-функцию непосредственно в Visual Studio.You can create a function app right from Visual Studio.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.In Solution Explorer, right-click the project and select Publish.

  2. В диалоговом окне Выберите целевой объект публикации используйте параметры публикации, указанные в таблице под изображением.In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    Выбор целевого объекта публикации

    ПараметрOption DescriptionDescription
    План потребления службы "Функции Azure"Azure Functions Consumption plan При публикации проекта в приложении-функции, которое работает в плане потребления, вы платите только за выполнение приложения-функции.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. Другие планы размещения связаны с дополнительными расходами.Other hosting plans incur higher costs. Дополнительные сведения см. в статье Масштабирование и размещение Функций Azure.To learn more, see Azure Functions scale and hosting.
    СоздатьCreate new В Azure создается приложение-функция со связанными ресурсами.A new function app, with related resources, is created in Azure. Если выбрать параметр Выбрать существующее, все файлы в существующем приложении-функции в Azure будут перезаписаны файлами из локального проекта.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. Используйте этот параметр только при повторной публикации обновлений для существующего приложения-функции.Only use this option when republishing updates to an existing function app.
    Запустить из файла пакетаRun from package file Приложение-функция развертывается с помощью Zip Deploy с включенным режимом Run-From-Package (Выполнение из пакета).Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Этот способ повышает производительность приложения-функции и является рекомендуемым.This is the recommended way of running your functions, which results in better performance. Если этот параметр не используется, перед публикацией в Azure остановите локальное выполнение проекта приложения-функции.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. Нажмите кнопку Опубликовать.Select Publish. Если вы еще не вошли в учетную запись Azure из Visual Studio, выберите Вход.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Вы также можете создать бесплатную учетную запись Azure.You can also create a free Azure account.

  4. В Службе приложений Azure: создание укажите параметры размещения, которые приведены в таблице ниже:In the Azure App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    Диалоговое окно "Создание службы приложений"

    ПараметрSetting Рекомендуемое значениеSuggested value DescriptionDescription
    НазваниеName Глобально уникальное имяGlobally unique name Имя, которое однозначно идентифицирует новое приложение-функцию.Name that uniquely identifies your new function app. Допустимые символы: a-z, 0-9 и -.Valid characters are a-z, 0-9, and -.
    подпискаSubscription Выберите свою подпискуChoose your subscription Подписка Azure, которую нужно использовать.The Azure subscription to use.
    Группа ресурсовResource Group myResourceGroupmyResourceGroup Имя группы ресурсов, в которой создается приложение-функция.Name of the resource group in which to create your function app. Чтобы создать группу ресурсов, выберите Создать.Choose New to create a new resource group.
    План размещенияHosting Plan План потребленияConsumption plan Для создания бессерверного плана щелкните Создать, а затем выберите Потребление в разделе Размер.Make sure to choose the Consumption under Size after you select New to create a serverless plan. Также нужно выбрать расположение в ближайшем регионе или в регионе, расположенном рядом с другими службами, к которым обращаются ваши функции.Also, choose a Location in a region near you or near other services your functions access. Когда выполняется план, отличный от Потребление, необходимо будет управлять масштабированием приложения-функции.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Служба хранилища AzureAzure Storage Учетная запись хранения общего назначенияGeneral-purpose storage account Учетная запись хранения Azure — обязательный ресурс для среды выполнения Функций.An Azure storage account is required by the Functions runtime. Выберите Создать, чтобы создать учетную запись хранения общего назначения.Select New to create a general-purpose storage account. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранилища.You can also use an existing account that meets the storage account requirements.
  5. Выберите Создать, чтобы создать приложение-функцию и связанные с ним ресурсы в Azure с заданными параметрами, а также развернуть код проекта функции.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. По окончании развертывания запомните или запишите URL-адрес сайта, который является адресом приложения-функции в Azure.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Сообщение об успешной публикации

Тестирование функции в AzureTest your function in Azure

  1. Скопируйте базовый URL-адрес приложения-функции на странице профиля публикации.Copy the base URL of the function app from the Publish profile page. Замените часть localhost:port URL-адреса, который использовался при локальной проверке функции новым базовым URL-адресом.Replace the localhost:port portion of the URL you used when testing the function locally with the new base URL.

    URL-адрес для вызова триггера HTTP устойчивой функции должен быть в следующем формате.The URL that calls your durable function HTTP trigger should be in the following format:

     http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart
    
  2. Вставьте этот URL-адрес HTTP-запроса в адресную строку браузера.Paste this new URL for the HTTP request into your browser's address bar. При использовании опубликованного приложения ответ состояния должен быть таким же, как и ранее.You should get the same status response as before when using the published app.

Дальнейшие действияNext steps

Visual Studio использовалась для создания и публикации устойчивого приложения-функции C#.You have used Visual Studio to create and publish a C# durable function app.