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

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

Модель выполнения Description
Изолированная рабочая модель Код функции выполняется в отдельном рабочем процессе .NET. Используйте поддерживаемые версии .NET и платформа .NET Framework. Дополнительные сведения см. в статье "Разработка изолированных рабочих процессов .NET".
Модель внутрипроцессного процесса Код функции выполняется в том же процессе, что и хост-процесс Функций. Поддерживает только долгосрочные версии .NET. Дополнительные сведения см. в статье "Разработка функций библиотеки классов .NET".

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

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

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

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

1 Если вам нужно при взаимодействии со службой использовать параметры, определяемые во время выполнения, мы рекомендуем напрямую обращаться к соответствующим пакетам SDK службы, чтобы использовать императивные привязки. Пакеты SDK возвращают меньше подробностей, подходят для более широкого круга сценариев и предпочтительнее при обработке ошибок и отладке. Эта рекомендация применима к обеим моделям.

2 Время холодного запуска может быть дополнительно затронуто в Windows при использовании некоторых предварительных версий .NET из-за JIT-загрузки платформ предварительной версии. Это влияние применяется как к моделям внутри процесса, так и к внепроцессным моделям, но может быть заметно при сравнении между различными версиями. Эта задержка для предварительных версий отсутствует в планах Linux.

3 Функции скрипта C# также выполняются в процессе и используют те же библиотеки, что и функции библиотеки классов в процессе. Дополнительные сведения см. в справочнике разработчика по скрипту C# Функции Azure (CSX).

4 типа пакета SDK службы включают типы из пакета SDK Azure для .NET , например BLOBClient.

Для платформа .NET Framework не поддерживаются типы ASP.NET Core.

6 .NET 8 еще не поддерживается в модели в процессе, хотя она доступна в изолированной рабочей модели. Сведения о планах .NET 8, включая будущие варианты для модели в процессе, см. в статье Функции Azure "Обновление стратегии".

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

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

Примечание.

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

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

Версия среды выполнения службы "Функции Azure" Изолированная рабочая модель Модель в процессе5
Функции 4.x .NET 8.0
.NET 7.01
.NET 6.02
платформа .NET Framework 4.83
.NET 6.02
Функции 1.x4 Н/Д .NET Framework 4.8

1 .NET 7 достигает окончания официальной поддержки 14 мая 2024 года.
2 .NET 6 достигает окончания официальной поддержки 12 ноября 2024 года.
3 Процесс сборки также требует пакета SDK для .NET. 4 Поддержка заканчивается для версии 1.x среды выполнения Функции Azure 14 сентября 2026 года. Дополнительные сведения см . в этом объявлении о поддержке. Для дальнейшей полной поддержки следует перенести приложения в версию 4.x.
5 Поддержка заканчивается для модели в процессе 10 ноября 2026 года. Дополнительные сведения см . в этом объявлении о поддержке. Для непрерывной поддержки следует перенести приложения в изолированную рабочую модель.

Последние новости о выпусках службы "Функции Azure", включая удаление отдельных устаревших промежуточных версий, см. в статье Анонсы для службы приложений Azure.

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