Skip to content

Commit 6820457

Browse files
committed
updated TOC; added orchestration framework article
1 parent 21d4be6 commit 6820457

File tree

2 files changed

+109
-30
lines changed

2 files changed

+109
-30
lines changed

articles/azure-functions/durable/TOC.yml

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
- name: Create a Durable Functions app - Java
3636
displayName: get started, chaining
3737
href: quickstart-java.md
38-
- name: Create an app with Durable Task SDK - Durable Task Scheduler
38+
- name: Create an app with Durable Task SDK and Durable Task Scheduler
3939
displayName: get started, durable task scheduler
4040
href: ./durable-task-scheduler/quickstart-portable-durable-task-sdks.md
41-
- name: Configure a storage provider - Durable Task Scheduler
41+
- name: Configure Durable Functions app with Durable Task Scheduler
4242
displayName: get started, durable task scheduler
4343
href: ./durable-task-scheduler/quickstart-durable-task-scheduler.md
44-
- name: Configure a storage provider - MSSQL
44+
- name: Configure Durable Functions app with MSSQL
4545
href: quickstart-mssql.md
4646
- name: Configure Durable Functions app with managed identity
4747
href: durable-functions-configure-managed-identity.md
@@ -62,7 +62,7 @@
6262
- name: Samples
6363
items:
6464
- name: Code samples
65-
href: /samples/browse/?products=azure-functions&term=durable
65+
href: /samples/browse/?term=durable%20functions
6666
- name: Azure CLI
6767
href: ../functions-cli-samples.md
6868
- name: Concepts
@@ -109,34 +109,38 @@
109109
items:
110110
- name: Overview
111111
href: ./durable-task-scheduler/durable-task-scheduler.md
112-
- name: Manage and monitor
113-
href: ./durable-task-scheduler/durable-task-scheduler-dashboard.md
112+
- name: Choosing an orchestration framework
113+
href: ./durable-task-scheduler/choose-orchestration-framework.md
114+
- name: Cost Considerations
115+
href: ./durable-task-scheduler/durable-task-scheduler.md
116+
- name: Concepts
117+
items:
118+
- name: Monitoring dashboard
119+
href: ./durable-task-scheduler/durable-task-scheduler-dashboard.md
120+
- name: Auto-purge
121+
href: ./durable-task-scheduler/durable-task-auto-purge.md
114122
- name: Durable Functions
115123
items:
116-
- name: Concepts
117-
items:
118-
- name: Work item throughput
124+
- name: Throughput benchmark
119125
href: ./durable-task-scheduler/durable-task-scheduler-work-item-throughput.md
120-
- name: How-to guides
121-
items:
122-
- name: Develop
123-
href: ./durable-task-scheduler/develop-with-durable-task-scheduler.md
126+
- name: How-to guides
127+
items:
128+
- name: Create Durable Task Scheduler
129+
href: ./durable-task-scheduler/develop-with-durable-task-scheduler.md
124130
- name: Durable Task SDKs
125131
items:
126-
- name: Concepts
127-
items:
132+
- name: Scheduler API
133+
href: ./durable-task-scheduler/durable-task-scheduler.md #placeholder
128134
- name: How-to guides
129135
items:
130-
- name: Use the Durable Task SDKs with Azure computes
131-
href: ./durable-task-scheduler/durable-task-scheduler-dashboard.md #placeholder
136+
- name: Run app on Azure Container Apps
137+
href: ./durable-task-scheduler/durable-task-scheduler.md #placeholder
132138
- name: Billing
133139
href: ./durable-task-scheduler/durable-task-scheduler-dedicated-sku.md
134140
- name: Troubleshoot
135141
href: ./durable-task-scheduler/troubleshoot-durable-task-scheduler.md
136142
- name: Reference
137143
items:
138-
- name: Choose your orchestration framework
139-
href: ./durable-task-scheduler/durable-task-scheduler-framework.md
140144
- name: Azure Functions
141145
items:
142146
- name: Host.json settings
@@ -147,18 +151,14 @@
147151
href: durable-functions-http-api.md
148152
- name: SDKs
149153
items:
150-
- name: Overview
151-
href: durable-functions-bindings.md #placeholder
152154
- name: .NET API
153155
items:
154-
- name: .NET in-process API
156+
- name: WebJobs.Extensions.DurableTask
155157
href: /dotnet/api/microsoft.azure.webjobs.extensions.durabletask
156-
- name: .NET isolated API
157-
items:
158-
- name: Durable Functions bindings for .NET isolated
159-
href: /dotnet/api/microsoft.azure.functions.worker.extensions.durabletask
160-
- name: Durable Task core SDK for .NET isolated
161-
href: /dotnet/api/microsoft.durabletask
158+
- name: Worker.Extensions.DurableTask
159+
href: /dotnet/api/microsoft.azure.functions.worker.extensions.durabletask
160+
- name: Microsoft.DurableTask
161+
href: /dotnet/api/microsoft.durabletask
162162
- name: Node.js API
163163
items:
164164
- name: Durable Functions
@@ -173,9 +173,9 @@
173173
href: /python/api/azure-functions-durable/azure.durable_functions #placeholder
174174
- name: Java API
175175
items:
176-
- name: Durable Functions bindings for Java
176+
- name: Durable Functions
177177
href: /java/api/com.microsoft.durabletask.azurefunctions
178-
- name: Durable Task core SDK for Java
178+
- name: Durable Task SDK
179179
href: /java/api/com.microsoft.durabletask
180180
- name: PowerShell
181181
items:
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: Choosing your orchestration framework
3+
description: This article provides guidance to help developers pick an orchestration framework.
4+
ms.topic: conceptual
5+
ms.date: 04/24/2025
6+
ms.author: azfuncdf
7+
author: lilyjma
8+
---
9+
10+
# Choosing your orchestration framework
11+
12+
The goal of this article is to provide information about two developer-oriented orchestration frameworks supported by Azure and considerations for when to choose which. The article will also provide some context around scenarios that warrant the use of an orchestration framework.
13+
14+
## Scenarios requiring orchestration
15+
Developers often find themselves creating solutions that involve multi-step operations, some of which may be long-running. These multiple-step operations are referred to as *orchestrations* or *workflows*. For example, an e-commerce website would need an order processing workflow, which has steps (maybe implemented as microservices) that need to happen sequentially to check the inventory, send order confirmation, process payment, and generate invoice. Another example would be an intelligent trip planner. The planner might suggest ideas based on user requirements, get preference confirmation, and then make required bookings. You can implement an agent for each task and orchestrate the steps for invoking these agents as a workflow.
16+
17+
Since orchestrations involve multiple steps or a step might be long-running, it's important that the framework you use keeps track of the application state so that execution can continue from the point of failure rather than the beginning. One way to ensure this statefulness is to continuouly checkpoint orchestration states to a persistance layer while it runs. The orchestration frameworks discussed in the next section does exactly this, while also taking care automatic retries so that you can orchestrate your workflows without the burden of architecting for fault tolerance.
18+
19+
The two scenarios above share a commonly used orchestration pattern, which is *sequential chaining* of operations. There are other patterns that benefit from the statefulness of an orchestration framework:
20+
- *Fan-out/fan-in*: For batch jobs, ETL (extract, transfer, and load), and any scenario that requires parallel processing
21+
- *Human interactions*: For two-factor authentication, workflows that require human approval
22+
- *Asynchronous HTTP APIs*: For any scenario where a client doesn't want to wait for long-running tasks to complete
23+
24+
The next section will cover the two orchestration frameworks supported by Azure: **Durable Functions** and **Durable Task SDKs (currently in public preview)**.
25+
26+
## Orchestration framework options
27+
Both orchestrations frameworks described in this section are designed for developers, so they're code-centric and are available in various popular programming languages.
28+
29+
### Durable Functions
30+
[Durable Functions](../durable-functions-overview.md) is a feature of Azure Functions, so it inherits a lot of the assets from the latter such as integrations with other Azure services through the Functions extensions, local development experience, serverless pricing model, etc. Other than running on the Functions platform, Durable Functions apps can also be run on Azure App Service and Azure Container App just like a regular Function app.
31+
32+
Durable Functions has a special feature called [Durable Entities](../durable-functions-entities.md), which are similar in concept to virtual actors or grains in the Orleans framework. Entities allow you to keep small pieces of states for objects in a distributed system. For example, you could use entities to model users of a microblogging app or the counter of an exercise app. Learn more about Durable Entities.
33+
34+
As mentioned earlier, orchestration frameworks need to persist state information. In the context of Durable Functions, states are persisted in something called a [storage backend](../durable-functions-storage-providers.md). Durable Functions supports two BYO or "bring-your-own" backends - Azure Storage and Microsoft SQL - and an Azure managed backend called Durable Task Scheduler (more information about the scheduler in the next section).
35+
36+
#### When to use Durable Functions
37+
If you need to build event-driven apps with workflows, the recommendation would be to consider Durable Functions. The Azure Functions extensions that provide integrations with other Azure services makes building event-driven scenarios easy. For example, if you need to start a Durable Functions orchestration when a message comes into your Azure Service Bus or when a file is uploaded to Azure Blob Storage, then you can easily implement that with Durable Functions. Or if you need an orchestration to start periodically or in reaction to an HTTP request, then you can build that with the Azure Functions timer and HTTP trigger, respectively.
38+
39+
Another scenario for choosing Durable Functions would be when your solution benefits from using Durable Entities, since the Durable Task SDKs don't provide this feature.
40+
41+
Lastly, if you're already writing Azure Function apps and realized that you need workflow, then you probably would want to use Durable Functions because you'll find its programming model to be very similar to Functions. You can accelerate your develope in this case.
42+
43+
**Quickstarts**
44+
- Create a durable functions app with Azure Storage backend
45+
- [.NET](../durable-functions-isolated-create-first-csharp.md)
46+
- [Python](../quickstart-python-vscode.md)
47+
- [JavaScript/TypeScript](../quickstart-js-vscode.md)
48+
- [Java](../quickstart-java.md)
49+
- [PowerShell](../quickstart-powershell-vscode.md)
50+
- [Configure a durable functions app with Durable Task Scheduler](./quickstart-durable-task-scheduler.md)
51+
- [Configure a durable functions app with MSSQL](../quickstart-mssql.md)
52+
53+
**Scenario samples**
54+
- Order processing workflow - [.NET](https://learn.microsoft.com/samples/azure-samples/durable-functions-order-processing/durable-func-order-processing/), [Python](https://learn.microsoft.com/samples/azure-samples/durable-functions-order-processing-python/durable-func-order-processing-py/)
55+
- Intelligent PDF summarizer - [.NET](https://learn.microsoft.com/samples/azure-samples/intelligent-pdf-summarizer-dotnet/durable-func-pdf-summarizer-csharp/), [Python](https://learn.microsoft.com/samples/azure-samples/intelligent-pdf-summarizer/durable-func-pdf-summarizer/)
56+
57+
### Durable Task SDKs with Durable Task Scheduler (public preview)
58+
The Durable Task SDKs are client SDKs that allows the orchestrations you write to connect to the orchestration engine in Azure. As such, apps that leverage the Durable Task SDKs can be run on virtually any compute platforms, including Azure Kubernetes Service, Azure Container Apps, Azure App Service, or just VMs on-prem.
59+
60+
The Durable Task SDKs must be used with the Durable Task Scheduler (currently in public preview), where the latter plays both the role of the orchestration engine and the storage backend for orchestration state persistence. As mentioned previously, the Durable Task Scheduler is fully managed by Azure, which eliminates management overhead. The scheduler is also optimized to provide high orchestration throughput, offers an out-of-the-box dashboard for orchestrations monitoring and debugging, as well as a local emulator and more. Learn more about the [Durable Task Scheduler](./durable-task-scheduler.md).
61+
62+
#### When to use Durable Task SDKs
63+
Use the Durable Task SDKs when your app needs only workflows. The Durable Task SDKs provide a lightweight and relatively un-opinionated programming model for authoring workflows.
64+
65+
The other reason for using the Durable Task SDKs is when you need to run apps on Azure Kubernetes Services or VMs on-prem with official Microsoft support. While Durable Functions can be run on these platforms as well, there is no official support.
66+
67+
**Quickstarts**
68+
- [.NET](./quickstart-portable-durable-task-sdks.md)
69+
- [Python]((./quickstart-portable-durable-task-sdks.md))
70+
- [Java](./quickstart-portable-durable-task-sdks.md)
71+
- JavaScript/TypeScript (coming soon)
72+
73+
>[!NOTE]
74+
>The Durable Task Framework is an open-source .NET orchestration framework. Like the Durable Task SDKs, it can be used to build apps that run on platforms like the Azure Kubernetes Services. However, we don't recommend new customers to use Durable Task Framework because it is not officially supported by Microsoft.
75+
76+
77+
78+
79+

0 commit comments

Comments
 (0)