本文概述了 .NET 独立工作器中的 Durable Functions。 借助独立辅助角色,Durable Functions 应用可在不同于 Azure Functions 主机的 .NET 版本上运行。
为什么在 .NET 隔离工作程序中使用 Durable Functions?
使用此模型,可以获得 Azure Functions .NET 隔离工作进程带来的所有好处。 有关更多信息,请参阅孤立工作者模型的优点。 此外,此新 SDK 包括一些新的功能。
对进程中 Durable Functions 的功能改进
- 可以直接注入业务流程输入:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) - 支持强类型调用和基于类的活动和编排(注意:预览状态。有关详细信息,请参阅 源生成器和基于类的活动和编排。)
- 此外,还包括 Azure Functions .NET 独立工作器的所有优势。
源生成器和基于类的活动和业务流程
要求:将 <PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" /> 添加到项目中。
通过添加源生成器包,可以访问两个新功能:
- 基于类的活动和编排,这是编写 Durable Functions 的替代方法。 你将编写强类型类,而不是“基于函数”,这些类继承 Durable SDK 的类型。
- 用于调用子业务流程和活动的强类型扩展方法。 还可以从“基于函数”的活动和业务流程使用这些扩展方法。
基于函数的示例
public static class MyFunctions
{
[Function(nameof(MyActivity))]
public static async Task<string> MyActivity([ActivityTrigger] string input)
{
// implementation
}
[Function(nameof(MyOrchestration))]
public static async Task<string> MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, string input)
{
// implementation
return await context.CallActivityAsync(nameof(MyActivity), input);
}
}
基于类的示例
[Function(nameof(MyOrchestration))]
public static async Task<string> MyOrchestration(
[OrchestrationTrigger] TaskOrchestrationContext context)
{
string input = context.GetInput<string>()!;
return await context.CallActivityAsync<string>(nameof(MyActivity), input);
}
[Function(nameof(MyActivity))]
public static string MyActivity([ActivityTrigger] string input)
{
return $"Processed: {input}";
}
持久实体
.NET 独立工作器支持持久实体。 有关详细信息,请参阅 开发人员指南。
迁移指南
若要将Durable Functions应用从进程内模型迁移到.NET隔离辅助角色,请参阅从进程内模型迁移到独立辅助角色模型。 本指南介绍项目设置、包引用、命名空间更改、API 映射、行为差异和常见迁移问题。