Skip to content

Latest commit

 

History

History
76 lines (59 loc) · 7.03 KB

File metadata and controls

76 lines (59 loc) · 7.03 KB
title Differences between in-process and isolate worker process .NET Azure Functions
description Compares features and functionality differences between running .NET Functions in-process or as an isolated worker process.
ms.service azure-functions
ms.custom
devx-track-dotnet
ignite-2023
ms.topic product-comparison
ms.date 05/06/2025
recommendations false

Differences between the isolated worker model and the in-process model for .NET on Azure Functions

There are two execution models for .NET functions:

[!INCLUDE functions-dotnet-execution-model]

[!INCLUDE functions-in-process-model-retirement-note]

This article describes the current state of the functional and behavioral differences between the two models. To migrate from the in-process model to the isolated worker model, see Migrate .NET apps from the in-process model to the isolated worker model.

Execution model comparison table

Use the following table to compare feature and functional differences between the two models:

Feature/behavior Isolated worker model In-process model3
Supported .NET versions Long Term Support (LTS) versions,
Standard Term Support (STS) versions,
.NET Framework
Long Term Support (LTS) versions, ending with .NET 8
Core packages Microsoft.Azure.Functions.Worker
Microsoft.Azure.Functions.Worker.Sdk
Microsoft.NET.Sdk.Functions
Binding extension packages Microsoft.Azure.Functions.Worker.Extensions.* Microsoft.Azure.WebJobs.Extensions.*
Durable Functions Supported Supported
Model types exposed by bindings Simple types
JSON serializable types
Arrays/enumerations
Service SDK types4
Simple types
JSON serializable types
Arrays/enumerations
Service SDK types4
HTTP trigger model types HttpRequestData / HttpResponseData
HttpRequest / IActionResult (using ASP.NET Core integration)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
Output binding interactions Return values in an expanded model with:
- single or multiple outputs
- arrays of outputs
Return values (single output only),
out parameters,
IAsyncCollector
Imperative bindings1 Not supported - instead work with SDK types directly Supported
Dependency injection Supported (improved model consistent with .NET ecosystem) Supported
Middleware Supported Not supported
Logging ILogger<T>/ILogger obtained from FunctionContext or by using dependency injection ILogger passed to the function
ILogger<T> by using dependency injection
Application Insights dependencies Supported Supported
Cancellation tokens Supported Supported
Cold start times2 Configurable optimizations Optimized
ReadyToRun Supported Supported
[Flex Consumption] Supported Not supported
.NET Aspire Preview Not supported
  1. When you need to interact with a service using parameters determined at runtime, using the corresponding service SDKs directly is recommended over using imperative bindings. The SDKs are less verbose, cover more scenarios, and have advantages for error handling and debugging purposes. This recommendation applies to both models.
  2. Cold start times could be additionally affected on Windows when using some preview versions of .NET due to just-in-time loading of preview frameworks. This impact applies to both the in-process and isolated worker models but can be noticeable when comparing across different versions. This delay for preview versions isn't present on Linux plans.
  3. C# Script functions also run in-process and use the same libraries as in-process class library functions. For more information, see the Azure Functions C# script (.csx) developer reference.
  4. Service SDK types include types from the Azure SDK for .NET such as BlobClient.
  5. ASP.NET Core types aren't supported for .NET Framework.

[!INCLUDE functions-dotnet-supported-versions]

Next steps

[!div class="nextstepaction"] Learn more about the isolated worker model

[!div class="nextstepaction"] Migrate to the isolated worker model