Skip to content

RFC: Durable Task middleware design review #721

@cgillum

Description

@cgillum

Summary

Requesting design review for the .NET Durable Task middleware proposal and reference implementation.

cc @torosent @jviau @stevendarby @LockTar

Review focus

Please review the proposed v1 shape and call out any blocking concerns around:

  • The async middleware pipeline shape for orchestrations and activities.
  • Orchestration replay determinism requirements and runtime illegal-await guard expectations.
  • The v1 decision that orchestration middleware must call
    ext(context) exactly once and cannot short-circuit or replace successful orchestration results.
  • Activity middleware short-circuiting through SetResult.
  • The type-keyed feature collection for host-specific context such as Azure Functions FunctionContext.
  • Migration guidance away from Azure Functions IFunctionBindingsFeature reflection/private protobuf workarounds.
  • Cross-SDK portability for JavaScript/TypeScript, Python, Java, and Go.

Current .NET scope

  • SDK-level orchestration and activity middleware in Microsoft.DurableTask.Worker.Middleware.
  • Standalone Durable Task worker registration through AddDurableTaskWorker() and UseOrchestrationMiddleware / UseActivityMiddleware.
  • .NET isolated Durable Functions registration through ConfigureDurableWorker().
  • Azure Functions GetFunctionContext() extensions for orchestration and activity middleware contexts.
  • Function-syntax and class-based Durable Functions orchestration/activity support.
  • Standalone and Durable Functions samples.

Out of scope for v1

  • Entity middleware.
  • Wire protocol or protobuf changes.
  • Orchestration middleware short-circuiting / SetResult.
  • Static analyzer work for orchestration middleware determinism.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions