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


Различия между изолированной рабочей моделью и внутрипроцессной моделью для .NET Azure Functions

Существует две модели выполнения для функций .NET:

Модель выполнения Описание
Изолированная рабочая модель Код функции выполняется в отдельном рабочем процессе .NET. Используйте поддерживаемые версии .NET и .NET Framework. Дополнительные сведения см. в статье Guide для запуска Azure Functions C# в изолированной рабочей модели.
Модель внутрипроцессного процесса Код функции выполняется в том же процессе, что и хост-процесс Функций. Поддерживает только версии .NET с «Long Term Support» (LTS). Дополнительные сведения см. в разделе Создание функций библиотек классов на C# с использованием Azure Functions.

В этой статье описывается текущее состояние функциональных и поведенческих различий между двумя моделями. Сведения о переходе из внутрипроцессной модели в изолированную рабочую модель см. в разделе Migrate .NET приложения из модели внутрипроцессной в изолированную рабочую модель.

Таблица сравнения моделей выполнения

Используйте следующую таблицу для сравнения функций и функциональных различий между двумя моделями:

Функция/поведение Изолированная модель рабочего Модель в процессе обработки3
Поддерживаемые версии .NET Версии долгосрочной поддержки (LTS),
Версии стандартной поддержки терминов (STS),
платформа .NET
Долгосрочные версии поддержки (LTS), заканчивающиеся .NET 8
Основные пакеты Microsoft. Azure. Functions.Worker
Microsoft. Azure. Functions.Worker.Sdk
Microsoft.NET. Sdk.Functions
Привязка пакетов расширений Microsoft. Azure. Functions.Worker.Extensions.* Microsoft. Azure. WebJobs.Extensions.*
Устойчивые функции Supported Supported
Типы моделей, предоставляемые через привязки Простые типы
Сериализуемые в JSON типы
Массивы и перечисления
Типы SDK службы4
Простые типы
Сериализуемые типы JSON
Массивы и перечисления
Типы SDK службы4
Типы моделей триггеров HTTP HttpRequestData / HttpResponseData
HttpRequest / IActionResult (использование интеграции ASP.NET Core)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
Взаимодействие с привязкой выходных данных Возвращайте значения в развернутой модели:
— один или несколько выходных данных
— массивы выходных данных
Возвращаемые значения (только для одного вывода),
out Параметры
IAsyncCollector
Принудительные привязки1 Вместо этого работайте с типами SDK напрямую - это не поддерживается. Supported
Внедрение зависимостей Supported (улучшенная модель, согласованная с экосистемой .NET) Supported
ПО промежуточного слоя Supported Не поддерживается
Ведение журнала ILogger<T> / ILogger получен из FunctionContext или с помощью внедрения зависимостей ILogger передается в функцию
ILogger<T> с помощью внедрения зависимостей
Зависимости Application Insights Supported Supported
Токены отмены Supported Supported
Время холодного запуска2 Настраиваемые оптимизации Оптимизированный
ReadyToRun Supported Supported
[Использование Flex] Supported Не поддерживается
.NET Aspire Preview Не поддерживается
  1. Если необходимо взаимодействовать со службой с использованием параметров, определяемых во время выполнения, рекомендуется напрямую использовать соответствующие SDK службы вместо императивных привязок. Пакеты SDK менее многословные, охватывают больше сценариев и имеют преимущества для обработки ошибок и целей отладки. Эта рекомендация применима к обеим моделям.
  2. Время холодного запуска может дополнительно увеличиваться в Windows при использовании некоторых предварительных версий .NET из-за just-in-time загрузки фреймворков предварительной версии. Это влияние применяется как к встроенным, так и изолированным рабочим моделям, но может быть заметно при сравнении между различными версиями. Эта задержка для предварительных версий отсутствует в планах Linux.
  3. Функции скрипта C# также выполняются в процессе и используют те же библиотеки, что и функции библиотек библиотеки классов в процессе. Дополнительные сведения см. в справочнике разработчика Azure Functions скриптов на C# (.csx).
  4. Типы пакета SDK службы включают типы из Azure SDK для .NET, например BlobClient.
  5. ASP.NET Core типы не поддерживаются для .NET Framework.

Поддерживаемые версии

Версии среды выполнения функций поддерживают определенные версии .NET. Для получения дополнительных сведений о версиях функций см. раздел Обзор версий среды выполнения Azure Functions. Поддержка версий также зависит от того, выполняются ли функции в процессе или изолированном рабочем процессе.

Примечание.

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

В следующей таблице показан самый высокий уровень .NET или .NET Framework, который можно использовать с определенной версией Функций.

Версия среды выполнения функций Изолированная рабочая модель Модель в процессе4
Функции версии 4.x1 .NET 105
.NET 9.0
.NET 8.0
.NET Framework 4.82
.NET 8.0
Функции 1.x3 Н/Д .NET Framework 4.8

1 .NET 6 ранее была поддерживается в обеих моделях, но достигло окончания официальной поддержки 12 ноября 2024 года. .NET 7 ранее поддерживался в изолированной рабочей модели, но достиг конца официальной поддержки 14 мая 2024 года.

2 Процесс сборки также требует пакета SDK .NET.

3 Поддержка заканчивается для среды выполнения версии 1.x Azure Functions 14 сентября 2026 года. Дополнительные сведения см. в этом объявлении о поддержке. Для дальнейшей полной поддержки следует перенести приложения в версию 4.x.

4 Поддержка модели in-process заканчивается 10 ноября 2026 года. Дополнительные сведения см. в этом объявлении о поддержке. Для непрерывной поддержки следует перенести приложения в изолированную рабочую модель.

5 Вы не можете запускать приложения .NET 10 на Linux в тарифном плане потребления. Для запуска в Linux следует использовать план потребления Flex. Пошаговые инструкции по миграции см. в статье "Миграция приложений плана потребления" в план потребления Flex.

Для получения последних новостей о выпусках Azure Functions, включая удаление некоторых более ранних минорных версий, отслеживайте объявления Azure App Service.

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