You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7 Durable Function中DurableClient等属性及客户端的等效替代

.NET 7 Durable Functions Worker模式 等效替代方案

客户端([DurableClient] + IDurableOrchestrationClient)

原WebJobs模式下的客户端写法依赖IDurableOrchestrationClient,在Worker模式中替换为IDurableClient,同时调整函数定义的属性和参数类型:

原代码:

[FunctionName("StartOrchestration")]
public async Task<IActionResult> Start(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [DurableClient] IDurableOrchestrationClient starter)
{
    // 启动编排逻辑
}

Worker模式等效写法:

[Function("StartOrchestration")]
public async Task<HttpResponseData> Start(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [DurableClient] IDurableClient durableClient)
{
    var instanceId = await durableClient.StartNewAsync("MyOrchestration", null);
    // 后续响应逻辑
}

编排触发器([OrchestrationTrigger] + IDurableOrchestrationContext)

IDurableOrchestrationContext仍可使用,但需确保引用Microsoft.Azure.Functions.Worker.Extensions.DurableTask包中的类型,同时函数属性从FunctionName改为Function:

原代码:

[FunctionName("MyOrchestration")]
public async Task<string> RunOrchestrator(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    // 编排逻辑
}

Worker模式等效写法:

[Function("MyOrchestration")]
public async Task<string> RunOrchestrator(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    var activityResult = await context.CallActivityAsync<string>("MyActivity", "sample input");
    return activityResult;
}

活动触发器([ActivityTrigger])

ActivityTrigger属性的使用方式基本一致,仅需调整函数属性和命名空间:

原代码:

[FunctionName("MyActivity")]
public string RunActivity([ActivityTrigger] string input)
{
    // 活动逻辑
}

Worker模式等效写法:

[Function("MyActivity")]
public string RunActivity([ActivityTrigger] string input)
{
    return $"Processed input: {input}";
}

核心注意事项

  • 替换NuGet包:移除Microsoft.Azure.WebJobs.Extensions.DurableTask,安装Microsoft.Azure.Functions.Worker.Extensions.DurableTask(选择适配.NET 7的版本)。
  • 依赖注入配置:Worker模式下无需继承FunctionsStartup,直接在Program.cs的ConfigureServices中注册服务。
  • 客户端注入:若需在非函数类中使用Durable客户端,直接通过依赖注入获取IDurableClient即可,无需依赖WebJobs的解析机制。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:40:55