microsoft / microsoft/durabletask-dotnet

RFC: Durable Task middleware design review

Open
#721 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs: Triage :mag:
Dominant language
C#
Stars
193
Forks
60
Avg merge
3d 12h
Merged PRs (30d)
4

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with doc/cross-sdk-middleware.md and doc/durable-task-middleware.md on the linked feature branch, then inspect the middleware registration entry points named in the issue. Review replay determinism, pipeline semantics, feature collection design, and cross-SDK portability against the listed focus areas. Done means documenting blocking concerns or confirming the proposed v1 shape.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, csharp
Domain
backend, backend-api-design, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.