microsoft / microsoft/durabletask-dotnet
RFC: Durable Task middleware design review
Nobody has claimed this yet.
- 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.
- Reference spec: https://github.com/microsoft/durabletask-dotnet/blob/feature/durable-task-middleware/doc/cross-sdk-middleware.md
- .NET user guide: https://github.com/microsoft/durabletask-dotnet/blob/feature/durable-task-middleware/doc/durable-task-middleware.md
- .NET feature branch: https://github.com/microsoft/durabletask-dotnet/tree/feature/durable-task-middleware
- Azure Functions usage sample: https://github.com/Azure/azure-functions-durable-extension/tree/feature/durable-middleware-functions/samples/durable-middleware
- Motivation: https://github.com/Azure/azure-functions-durable-extension/issues/3054
- Cross-SDK tracking: https://github.com/microsoft/durabletask-dotnet/issues/720
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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