Compartilhar via

在 Azure Functions 上,独立工作者模型与 .NET 进程内模型之间的差异

.NET函数有两个执行模型:

执行模型 说明
独立工作模型 函数代码在单独的.NET工作进程中运行。 与 支持的 .NET 和 .NET Framework 版本 一起使用。 若要了解详细信息,请参阅 隔离工作者模型中的 C# Azure 函数运行指南
进程内模型 函数代码与 Functions 宿主进程在同一进程中运行。 仅支持 Long Term Support (LTS) 版本的 .NET。 若要了解详细信息,请参阅 使用 Azure Functions 开发 C# 类库函数

本文描述了两个模型之间的功能和行为差异的现状。 若要从进程内模型迁移到独立工作者模型,请查看.NET 应用程序从进程内模型迁移到独立工作者模型

执行模式比较表

使用下表比较两个模型之间的特征和功能差异:

功能/行为 独立工作模型 进程内模型3
支持的 .NET 版本 长期支持 (LTS) 版本,
标准期限支持 (STS) 版本,
.NET Framework
长期支持 (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.*
持久函数 支持 支持
由绑定暴露的模型类型 简单类型
JSON 可序列化类型
数组/枚举
服务 SDK 类型 4
简单类型
JSON 可序列化类型
数组/枚举
服务 SDK 类型 4
HTTP 触发器模型类型 HttpRequestData / HttpResponseData
HttpRequest / IActionResult(using ASP.NET Core integration5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
输出绑定交互 返回扩展模型中的值以及:
- 一个或多个输出
- 输出数组
返回值(仅单个输出),
out 参数,
IAsyncCollector
命令性绑定1 不受支持 - 改为直接使用 SDK 类型 支持
依赖注入 Supported(与.NET生态系统一致的改进模型) 支持
中间件 支持 不支持
日志记录 ILogger<T> / ILoggerFunctionContext 或使用依赖项注入获取 传递给函数的 ILogger
通过使用ILogger<T>
Application Insights 依赖项 支持 支持
取消令牌 支持 支持
冷启动时间2 可配置优化 已优化
ReadyToRun 支持 支持
.NET Aspire 预览 不支持
  1. 如果需要通过在运行时确定的参数与服务交互,建议直接使用相应的服务 SDK,而不是使用命令式绑定。 SDK 不太详细,涵盖更多方案,并且在错误处理和调试方面具有优势。 此建议适用于这两种模型。
  2. 使用某些预览版.NET时,由于预览框架的实时加载,冷启动时间可能会对Windows产生额外影响。 这种影响适用于进程内工作者模型和独立工作者模型,但在比较不同版本时可能会显现出差异。 Linux 计划中不存在预览版本的此延迟。
  3. C# 脚本函数还运行进程内函数,并使用与进程内类库函数相同的库。 有关详细信息,请参阅 Azure Functions C# 脚本 (.csx) 开发人员参考
  4. 服务 SDK 类型包括来自 适用于 .NET 的 Azure SDK 的类型,例如 BlobClient
  5. .NET Framework 不支持 ASP.NET Core类型。

支持的版本

Functions 运行时版本支持 .NET 的特定版本。 若要了解有关 Functions 版本的详细信息,请参阅 Azure Functions 运行时版本概述。 版本支持也取决于 Functions 是在进程内运行还是在独立工作进程中运行。

注意

若要了解如何更改函数应用使用的 Functions 运行时版本,请参阅查看和更新当前运行时版本

下表显示了可用于特定版本 Functions 的 .NET 或 .NET 框架的最高级别。

函数运行时版本 独立工作模型 进程内模型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 以前在两种型号上均受支持,但在 2024 年 11 月 12 日达到了官方支持的终点。 .NET 7 以前在隔离的辅助角色模型中受支持,但于 2024 年 5 月 14 日达到官方支持结束。

2生成过程还需要.NET SDK

3 Azure Functions 运行时版本 1.x 的支持将于 2026 年 9 月 14 日结束。 有关详细信息,请参阅此支持公告。 为了继续获得完全支持,应将应用迁移到版本 4.x

4 对进程内模型的支持将于 2026 年 11 月 10 日结束。 有关详细信息,请参阅此支持公告。 为了继续获得全面支持,您应该将应用程序迁移到独立工作者模型

5 你不能在消耗计划中运行 .NET 10 应用程序于 Linux 上。

有关 Azure Functions 版本更新的最新消息,包括删除特定较旧的版本,请关注 Azure 应用服务 公告

后续步骤