Durable Functions is an extension that helps developers build reliable, stateful apps on the Azure Functions platform.
This extension adds three new types functions to the Azure Functions family:
- Orchestrator functions: Long-running, reliable workflow functions written in code that schedule and coordinate other functions.
- Activity functions: Stateless functions that are the basic unit of work in a durable function orchestration.
- Entity functions: Stateful actor-like functions that have identities and store state explicitly.
Durable Functions can run anywhere that Azure Functions can run, including in the Azure Functions "Serverless" Consumption plan, the Elastic Premium plan, on Kubernetes, or even locally for development using Visual Studio or Visual Studio Code.
For a more detailed overview, including examples of what you can do with Durable Functions, see our What is Durable Functions? article.
Durable Functions updates are published as NuGet packages.
|Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers (C# only)|
Durable Functions supports a subset of languages supported by Azure Functions:
|C#||Generally available - get started||Azure/azure-functions-durable-extension|
|Python||Generally available - get started||Azure/azure-functions-durable-python|
|PowerShell||Public preview - get started||Azure/azure-functions-powershell-worker|
|Java||Under consideration - give feedback|
Each language has its own language-specific SDK and programming model. Regardless of which language you use, the extension in this repo must be installed to enable the Durable Functions triggers.
The Durable Functions NuGet package can be referenced directly in a Visual Studio project or can be installed using the Azure Functions Core Tools command-line:
func extensions install -p Microsoft.Azure.WebJobs.Extensions.DurableTask -v 2.3.0
Durable Functions is also available in supported extension bundles. Note that extension bundles are only supported for non-.NET languages.
Many features of Durable functions have been voluntarily contributed by the community, and we always welcome such contributions. If you are interested in contributing, please take a look at our CONTRIBUTING guide.
This project is licensed under the MIT License.