Обзор версий Устойчивых функций
Устойчивые функции являются расширением Функций 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, вызов события для несуществующей оркестрации приводит к исключению.