你当前正在访问 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) 版本6
核心包 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 类型。

6 进程内模型上尚不受支持 .NET8,但在独立工作器模型上可用。 有关 .NET 8 计划的信息,包括进程内模型的未来选项,请参阅 Azure Functions 路线图更新文章

支持的版本

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

注意

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

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

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

1 .NET 7 将于 2024 年 5 月 14 日正式结束支持
2 .NET 6 将于 2024 年 11 月 12 日正式结束支持
3 生成进程还需要使用 .NET SDK4 对 Azure Functions 运行时 1.x 版的支持将于 2026 年 9 月 14 日结束。 有关详细信息,请参阅此支持公告。 为了继续获得完全支持,应将应用迁移到版本 4.x
5对进程内模型的支持将于 2026 年 11 月 10 日结束。 有关详细信息,请参阅此支持公告。 为了继续获得完全支持,应将应用迁移到独立的辅助角色模型

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

后续步骤