Поделиться через


Обзор версий Durable Functions

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

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

В этом разделе представлен новый пакет Microsoft.Azure.WebJobs.Extensions.DurableTask версии 3 (называемый webJobs.Extensions.DurableTask в последующих разделах) и подробные сведения об обновлениях и изменениях. Это обновление считается критическим изменением только для клиентов, работающих с приложениями Durable C#, которые используют внутрипроцессную модель.

Примечание.

Пакет внепроцессных устойчивых функций .NET Microsoft.Azure.Functions.Worker.Extensions.DurableTask ссылается на Microsoft.Azure.WebJobs.Extensions.DurableTask в качестве базовой сборки. Таким образом, это обновление также относится к Microsoft.Azure.Functions.Worker.Extensions.DurableTask, начиная с версии 1.2.x.

Новый пакет SDK службы хранилища Azure

Изначально Durable Functions используют Azure Storage в качестве серверной части для надежного сохранения состояния приложения. В WebJobs.Extensions.DurableTask версии 3 серверная часть службы хранилища Azure была обновлена, чтобы использовать последние версии пакетов SDK службы хранилища Azure: Azure.Data.Tables, Azure.Storage.Blobs и Azure.Storage.Queues. Новые пакеты SDK службы хранилища Azure более защищены и предлагают расширенную поддержку Управляемого Удостоверения. Они также обеспечивают более высокую производительность, более эффективную обработку данных и другие новейшие функции хранения.

Улучшена экономичность серверной части службы хранилища Azure

В серверной части службы хранилища Azure менеджер разделов отвечает за распределение разделов и управляющих очередей среди рабочих ролей. Пакет WebJobs.Extensions.DurableTask версии 3 использует по умолчанию менеджер разделов версии 3 — это новая конструкция, которая использует таблицы Azure для управления назначениями разделов вместо аренды объектов BLOB в Azure. Эта конструкция может значительно сократить затраты на хранение, упрощая отладку. При использовании диспетчера секций версии 3 новая таблица с именем Partitionsсоздается в учетной записи хранения, что позволяет легко проверить сведения о секции.

Удалена поддержка среды выполнения Функций версии 1

WebJobs.Extensions.DurableTask версии 3 больше не поддерживает версию 1.x среды выполнения Функций Azure, поддержку которой планируется завершить в сентябре 2026 года. Если необходимо использовать среду выполнения функций версии 1, используйте версию расширения устойчивых функций ниже версии 2.11.0. Помните, что при запланированном окончании поддержки Durable Functions также прекратят свою поддержку среды выполнения версии 1.

Обновление .NET Framework

WebJobs.Extensions.DurableTask версии 3 обновляет платформу .NET с .NET Core 3.1 до .NET 6, обеспечивая улучшенную производительность и улучшенную совместимость с современными функциями и библиотеками .NET. Это обновление соответствует будущим выпускам пакетов расширений Функций Azure.

Миграция с WebJobs.Extensions.DurableTask версии 2.x на v3.x

Миграция с WebJobs.Extensions.DurableTask версии 2.x на v3.x предназначена для простого использования без изменений кода, так как изменения находятся в фоновом режиме. Просто обновите зависимости, чтобы начать использовать новые функции и улучшения в версии 3.x.

Примечание.

WebJobs.Extensions.DurableTask версии 3 использует последнюю версию пакета SDK службы хранилища Azure, которая имеет другую кодировку текста (Base64) по сравнению с той, которая используется в версии 2 (UTF-8). Если необходимо перейти с версии 3.x на версию 2.x, чтобы обеспечить обратную совместимость, используйте по крайней мере версию 2.13.5. Для внепроцессных пользователей .NET с Microsoft.Azure.Functions.Worker.Extensions.DurableTask, сделайте понижение до версии 1.1.5, если это возврат с версии 1.2.x или выше.

Поддержка и обслуживание версии 2.x

WebJobs.Extensions.DurableTask версии 2.x продолжает получать обновления системы безопасности и исправления ошибок, гарантируя, что существующие приложения остаются безопасными и стабильными. Однако все новые функции и улучшения добавляются исключительно в версию 3.x. Из-за этого необходимо обновить до webJobs.Extensions.DurableTask версии 3, как только вы сможете воспользоваться новейшими возможностями и текущими улучшениями.

Новые возможности в Microsoft.Azure.WebJobs.Extensions.DurableTask версии 2.x

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

Примечание.

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

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

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

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

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

Устойчивый HTTP

В Durable Functions 2.x мы представили новую функцию Durable HTTP, которая позволяет:

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

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

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

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

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

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

JavaScript, Python и PowerShell

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

Для поддержки Python в Durable Functions требуется версия 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 не отображает правильные шаблоны после изменения версии пакета расширений, перезагрузите окно, выполнив команду "Разработчик: перезагрузить окно" (CTRL+R в Windows и Linux, command+R в macOS).

Ява

Устойчивые функции 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") для конфигурации уведомлений Event Grid.

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

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

В версии 1.x, если имя концентратора задач не указано в host.json, по умолчанию оно было задано как "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 привязка клиента оркестрации использует значение typeorchestrationClient. Версия 2.x используется вместо этого durableClient.

Инициировать изменения событий

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