Обзор версий Устойчивых функций

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

Новые функции в версии 2.x

В этом разделе описаны возможности Устойчивых функций, добавленные в версии 2.x.

Примечание

Этот раздел не относится к Устойчивые функции в изолированной рабочей роли dotnet. Для этого см. общие сведения об изолированных процессах устойчивых функций.

Устойчивые сущности

В Устойчивых функциях 2.x добавлена новая концепция функций сущностей.

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

Дополнительные сведения см. в статье Устойчивые сущности.

Устойчивый протокол HTTP

В Устойчивых функциях 2.x добавлена новая функция устойчивого протокола HTTP, которая предоставляет следующие возможности:

  • Вызов API-интерфейсов HTTP непосредственно из функций оркестрации (с некоторыми задокументированными ограничениями).
  • Реализация автоматического опроса состояния HTTP 202 на стороне клиента.
  • Встроенная поддержка управляемых удостоверений Azure.

Дополнительные сведения см. в статье Функции HTTP.

Миграция с версии 1.x на 2.x

В этом разделе описана миграция Устойчивых функций с версии 1.x на 2.x для использования преимуществ новых возможностей.

Обновление расширения

Установите в проекте последнюю версию 2.x расширения привязок Устойчивых функций.

JavaScript, Python и PowerShell

Устойчивые функции 2.x доступны, начиная с версии 2.x пакета расширений Функций Azure.

Для поддержки Python требуются Устойчивые функции версии 2.x.

Чтобы обновить версию пакета расширений в проекте, откройте файл host.json и обновите раздел extensionBundle для использования версии 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Примечание

Если в Visual Studio Code не отображаются правильные шаблоны после изменения версии пакета расширений, перезагрузите окно, выполнив команду Developer: Reload Window (Разработчик: перезагрузить окно) (Ctrl + R в Windows и Linux, Command + R в macOS).

Java

Устойчивые функции 2.x доступны, начиная с версии 4.x пакета расширений Функций Azure. Для выполнения функций Java необходимо использовать среду выполнения Функции Azure 4.0.

Чтобы обновить версию пакета расширений в проекте, откройте файл host.json и обновите раздел extensionBundle для использования версии 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

.NET

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

Дополнительные сведения см. в статье Регистрация расширения привязок Функций Azure.

Обновление кода

У Устойчивых функций 2.x есть несколько критических изменений. Приложения Устойчивых функций 1.x несовместимы с Устойчивыми функциями 2.x без изменений кода. В этом разделе перечислены некоторые изменения, которые необходимо внести при обновлении функций версии 1.x до 2.x.

Схема Host.json

В Устойчивых функциях 2.x используется новая схема host.json. Основные отличия от версии 1.x:

  • "storageProvider" (и подраздел "azureStorage") для конфигурации конкретного хранилища;
  • "tracing" для конфигурации трассировки и ведения журнала;
  • "notifications" (и подраздел "eventGrid") для конфигурации уведомлений сетки событий.

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

Изменения имени концентратора задач по умолчанию

В версии 1.x, если имя центра задач не указано в host.js, по умолчанию оно имело значение DurableFunctionsHub. В версии 2.x имя центра задач по умолчанию теперь является производным от имени приложения-функции. Поэтому если вы не указали имя центра задач при обновлении до версии 2.x, то ваш код будет работать с новым центром задач и у активных оркестраций больше не будет приложения, которое их обрабатывает. Чтобы устранить эту проблему, укажите для своего центра задач имя DurableFunctionsHub (которое является именем по умолчанию в версии 1.x) либо ознакомьтесь с нашим руководством по развертыванию без простоев, чтобы узнать, как обрабатывать критические изменения для активных оркестраций.

Изменения открытого интерфейса (только для .NET)

В версии 1.x различные объекты контекста, поддерживаемые Устойчивыми функциями, имеют абстрактные базовые классы, предназначенные для использования в модульном тестировании. Являясь частью Устойчивых функций 2.x, эти абстрактные базовые классы заменяются интерфейсами.

В следующей таблице представлены основные изменения:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient либо IDurableClient
DurableOrchestrationContext или DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext или DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

Если абстрактный базовый класс содержал виртуальные методы, они были заменены методами расширения, определенными в DurableContextExtensions.

Изменения в файле function.json

В Устойчивых функциях 1.x привязка клиента оркестрации использует type свойства orchestrationClient. В версии 2.x используется durableClient.

Изменения в вызове событий

Если вызвать API вызова событий и указать несуществующий экземпляр в Устойчивых функциях 1.x, произойдет сбой. Начиная с версии 2.x, вызов события для несуществующей оркестрации приводит к исключению.