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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions