你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

执行模型 说明
独立工作模型 函数代码在单独的 .NET 工作进程中运行。 与受支持的 .NET 和 .NET Framework 版本结合使用。 若要了解详细信息,请参阅开发 .NET 独立工作进程函数
进程模型 函数代码与 Functions 宿主进程在同一进程中运行。 仅支持 .NET 的长期支持 (LTS) 版本。 若要了解详细信息,请参阅开发 .NET 类库函数

本文描述了两个模型之间的功能和行为差异的现状。 若要从进程内模型迁移到独立辅助角色模型,请参阅将 .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.*
Durable Functions 支持 支持
绑定公开的模型类型 简单类型
JSON 可序列化类型
数组/枚举
服务 SDK 类型 4
简单类型
JSON 可序列化类型
数组/枚举
服务 SDK 类型 4
HTTP 触发器模型类型 HttpRequestData / HttpResponseData
HttpRequest / IActionResult(使用 ASP.NET Core 集成5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
输出绑定交互 返回扩展模型中的值以及:
- 一个或多个输出
- 输出数组
返回值(仅单个输出),
out 参数,
IAsyncCollector
命令性绑定1 不受支持 - 改为直接使用 SDK 类型 支持
依赖关系注入 受支持(改进的模型与 .NET 生态系统一致) 支持
中间件 支持 不支持
日志记录 FunctionContext (或通过依赖项注入)获取的 ILogger<T>/ILogger 传递给函数的 ILogger
通过依赖项注入ILogger<T>
Application Insights 依赖项 支持 支持
取消令牌 支持 支持
冷启动时间2 可配置优化 已优化
ReadyToRun 支持 支持
[弹性消耗] 支持 不支持

1如果需要使用在运行时确定的参数与服务交互,建议直接使用相应的服务 SDK,而不是使用命令性绑定。 SDK 不太详细,涵盖更多方案,并且在错误处理和调试方面具有优势。 此建议适用于这两种模型。

2 使用 .NET 的某些预览版本时,由于预览框架的实时加载,Windows 上的冷启动时间可能会受到额外影响。 这种影响适用于进程内和进程外模型,但如果在不同版本之间进行比较,差异可能比较明显。 Linux 计划中不存在预览版本的此延迟。

3 C# 脚本函数也在进程内运行,并使用与进程内类库函数相同的库。 有关详细信息,请参阅 Azure Functions C# 脚本 (.csx) 开发人员参考

4 服务 SDK 类型包括 Azure SDK for .NET 中的类型,例如 BlobClient

.NET Framework 不支持 5ASP.NET Core 类型。

支持的版本

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

注意

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

下表显示了可与特定版本的 Functions 配合使用的 .NET 或 .NET Framework 的最高级别。

Functions 运行时版本 独立工作模型 进程内模型5
Functions 4.x1 .NET 8.0
.NET 6.02
.NET Framework 4.83
.NET 8.0
.NET 6.02
Functions 1.x4 不适用 .NET Framework 4.8

1 .NET 7 以前在独立工作器模型上受支持,但已于 2024 年 5 月 14 日结束正式支持

2 .NET 6 将于 2024 年 11 月 12 日正式结束支持

3 生成进程还需要使用 .NET SDK

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

5 对进程内模型的支持将于 2026 年 11 月 10 日结束。 有关详细信息,请参阅此支持公告。 为了继续获得完全支持,应将应用迁移到独立的辅助角色模型

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

后续步骤