You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/azure-functions/durable/choose-orchestration-framework.md
+28-27Lines changed: 28 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: Choose your programming model
2
+
title: Choose your hosting model
3
3
description: Learn how your hosting platform determines whether to use Durable Functions for Azure Functions or the standalone Durable Task SDKs for self-hosted scenarios.
4
4
author: cgillum
5
5
ms.author: cgillum
@@ -9,20 +9,24 @@ ms.topic: concept-article
9
9
ms.service: azure-functions
10
10
ms.subservice: durable
11
11
titleSuffix: Durable Task
12
-
#Customer intent: As a developer, I want to understand which Durable Task programming model to use based on my hosting platform.
12
+
#Customer intent: As a developer, I want to understand which Durable Task hosting model to use based on my hosting platform.
13
13
---
14
14
15
-
# Choose your programming model
15
+
# Choose your hosting model
16
16
17
-
As described in [What is Durable Task?](what-is-durable-task.md), the Durable Task framework supports two hosting models: **Azure Functions** (via Durable Functions) and **self-hosted** (via the standalone Durable Task SDKs). Both hosting models provide the same core durable execution capabilities (orchestrations, activities, timers, external events, and more) but differ in how your application is hosted, scaled, and deployed.
17
+
As described in [What is Durable Task?](what-is-durable-task.md), the Durable Task framework supports two hosting models:
In general, where your application runs determines which programming model you use. If you're building on Azure Functions, you use Durable Functions. If you're building on any other compute platform, you use the standalone Durable Task SDKs.
21
+
Both hosting models provide the same core durable execution capabilities (orchestrations, activities, timers, external events, and more) but differ in how your application is hosted, scaled, and deployed.
22
+
23
+
In general, where your application runs determines which hosting model you use. If you're building on Azure Functions, you use Durable Functions. If you're building on any other compute platform, you use the standalone Durable Task SDKs.
20
24
21
25
## Choosing based on hosting platform
22
26
23
-
If you already know your application's hosting platform, the following table can help you determine which programming model to use:
27
+
If you already know your application's hosting platform, the following table can help you determine which hosting model to use:
|**Azure Container Apps** (with Azure Functions runtime) | Either |
@@ -31,11 +35,11 @@ If you already know your application's hosting platform, the following table can
31
35
|**Virtual machines or on-premises**| Standalone Durable Task SDKs |
32
36
33
37
> [!NOTE]
34
-
> Azure App Service and Azure Container Apps can both host the Azure Functions runtime, either through [fully managed Azure Functions integration](../functions-scale.md#overview-of-plans) or by deploying the Functions runtime directly. Thus, both platforms support either programming model. For more information on Azure Functions hosting options, see [Azure Functions hosting plans](../functions-scale.md).
38
+
> Azure App Service and Azure Container Apps can both host the Azure Functions runtime, either through [fully managed Azure Functions integration](../functions-scale.md#overview-of-plans) or by deploying the Functions runtime directly. Thus, both platforms support either hosting model. For more information on Azure Functions hosting models, see [Azure Functions hosting plans](../functions-scale.md).
35
39
36
-
## Comparing the programming models
40
+
## Comparing the hosting models
37
41
38
-
The following table summarizes the key differences between the two programming models:
42
+
The following table summarizes the key differences between the two hosting models:
Durable Functions supports multiple storage backends, while the Durable Task SDKs exclusively use the Durable Task Scheduler.
85
89
86
90
> [!TIP]
87
-
> The **Durable Task Scheduler** is a fully managed Azure service that handles orchestration state persistence and execution. It's provisioned as a separate Azure resource with its own [pricing](./durable-task-scheduler/durable-task-scheduler-dedicated-sku.md). It's the recommended backend for Durable Functions and the only supported backend for the Durable Task SDKs.
91
+
> The **Durable Task Scheduler** is a fully managed Azure service that handles orchestration state persistence and execution. It's provisioned as a separate Azure resource with its own [pricing](./durable-task-scheduler/durable-task-scheduler-billing.md). It's the recommended backend for Durable Functions and the only supported backend for the Durable Task SDKs.
Both programming models support the **[Durable Task Scheduler](./durable-task-scheduler/durable-task-scheduler.md)** as a state storage backend, which provides both state storage and extra monitoring capabilities. Durable Functions also supports several bring-your-own (BYO) storage options for scenarios that require them. For more information, see [Storage providers](durable-functions-storage-providers.md).
118
+
Both hosting models support the **[Durable Task Scheduler](./durable-task-scheduler/durable-task-scheduler.md)** as a state storage backend, which provides both state storage and extra monitoring capabilities. Durable Functions also supports several bring-your-own (BYO) storage options for scenarios that require them. For more information, see [Storage providers](durable-functions-storage-providers.md).
115
119
116
120
## More considerations
117
121
118
-
When choosing between the two programming models, consider the following factors:
122
+
When choosing between the two hosting models, consider the following factors:
| You want built-in Azure Functions triggers (HTTP, Queue, Timer, etc.). | You want full control over your container and its entry points. |
123
-
| You're already familiar with the Azure Functions programming model. | You prefer a lightweight SDK without the Azure Functions runtime overhead. |
127
+
| You're already familiar with the Azure Functions hosting model. | You prefer a lightweight SDK without the Azure Functions runtime overhead. |
124
128
| You want Azure portal integration for function management. | You want the same code to be portable across container platforms (AKS, App Service, etc.). |
125
129
| You need to choose from [multiple storage backends](durable-functions-storage-providers.md). | You have existing non-Functions application code to integrate with. |
126
130
| You need **serverless, event-driven apps** that scale to zero. | You need **always-on, low-latency workloads** without cold start delays. |
@@ -139,7 +143,7 @@ All Durable Task SDKs are open source and available on GitHub. However, some SDK
139
143
140
144
### Durable Task Framework (Legacy)
141
145
142
-
The [Durable Task Framework](https://github.com/Azure/durabletask) (DTFx) is an older, open-source .NET Durable Task library. While it provides similar orchestration primitives, it predates the modern Durable Task SDKs and doesn't include official Microsoft support or the latest features. It also requires you to manage hosting, operational infrastructure, and long-term maintenance themselves.
146
+
The [Durable Task Framework](https://github.com/Azure/durabletask) (DTFx) is an older, open-source .NET Durable Task library. While it provides similar orchestration primitives, it predates the modern Durable Task SDKs and doesn't include official Microsoft support or the latest features. It also requires you to manage hosting, operational infrastructure, and long-term maintenance yourself.
143
147
144
148
If you're starting a new project, we recommend using the modern Durable Task SDKs or Durable Functions instead.
145
149
@@ -152,15 +156,12 @@ The [Durable Task SDK for Go](https://github.com/Azure/durabletask-go) is a comm
152
156
153
157
## Next steps
154
158
155
-
Once you've decided which framework to use, get started with the appropriate quickstart:
156
-
157
-
-**Durable Functions**: [Create your first Durable Functions app](durable-functions-isolated-create-first-csharp.md)
158
-
-**Durable Task SDKs**: [Create an app with Durable Task SDKs](durable-task-scheduler/quickstart-durable-task-scheduler.md)
Copy file name to clipboardExpand all lines: articles/azure-functions/durable/durable-functions-azure-storage-provider.md
+10-9Lines changed: 10 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -165,7 +165,7 @@ Storing payloads to local disks is *not* recommended, since on-disk state isn't
165
165
166
166
## Configuring the Azure storage provider
167
167
168
-
The Azure Storage provider is the default storage provider and doesn't require any explicit configuration, NuGet package references, or extension bundle references. You can find the full set of **host.json** configuration options[here](durable-functions-bindings.md#durable-functions-settings-in-hostjson), under the `extensions/durableTask/storageProvider` path.
168
+
The Azure Storage provider is the default storage provider and doesn't require any explicit configuration, NuGet package references, or extension bundle references. You can find the full set of [Durable Functions host.json configuration options](durable-functions-bindings.md#durable-functions-settings-in-hostjson) under the `extensions/durableTask/storageProvider` path.
169
169
170
170
### Connections
171
171
@@ -178,15 +178,16 @@ If the configured value is both an exact match for a single setting and a prefix
178
178
179
179
### Identity-based connections
180
180
181
-
If you are using [version 2.7.0 or higher of the extension](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.7.0) and the Azure storage provider, instead of using a connection string with a secret, you can have the app use an [Microsoft Entra identity](../../active-directory/fundamentals/active-directory-whatis.md). To do this, you would define settings under a common prefix which maps to the `connectionName` property in the trigger and binding configuration.
181
+
If you are using [version 2.7.0 or higher of the extension](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.7.0) and the Azure storage provider, instead of using a connection string with a secret, you can have the app use an [Microsoft Entra identity](/entra/fundamentals/what-is-entra). To do this, you would define settings under a common prefix which maps to the `connectionName` property in the trigger and binding configuration.
182
182
183
183
To use an identity-based connection for Durable Functions, configure the following app settings:
184
184
185
-
|Property | Environment variable template | Description | Example value |
| Blob service URI |`<CONNECTION_NAME_PREFIX>__blobServiceUri`| The data plane URI of the blob service of the storage account, using the HTTPS scheme. | https://<storage_account_name>.blob.core.windows.net |
188
-
| Queue service URI |`<CONNECTION_NAME_PREFIX>__queueServiceUri`| The data plane URI of the queue service of the storage account, using the HTTPS scheme. | https://<storage_account_name>.queue.core.windows.net |
189
-
| Table service URI |`<CONNECTION_NAME_PREFIX>__tableServiceUri`| The data plane URI of a table service of the storage account, using the HTTPS scheme. | https://<storage_account_name>.table.core.windows.net |
185
+
| Property | Environment variable template | Description | Example value |
| Blob service URI |`<CONNECTION_NAME_PREFIX>__blobServiceUri`| The data plane URI of the blob service of the storage account, using the HTTPS scheme. |`https://<storage_account_name>.blob.core.windows.net`|
188
+
| Queue service URI |`<CONNECTION_NAME_PREFIX>__queueServiceUri`| The data plane URI of the queue service of the storage account, using the HTTPS scheme. |`https://<storage_account_name>.queue.core.windows.net`|
189
+
| Table service URI |`<CONNECTION_NAME_PREFIX>__tableServiceUri`| The data plane URI of a table service of the storage account, using the HTTPS scheme. |`https://<storage_account_name>.table.core.windows.net`|
190
+
<!-- markdownlint-enable MD044 -->
190
191
191
192
Additional properties may be set to customize the connection. See [Common properties for identity-based connections](../functions-reference.md#common-properties-for-identity-based-connections).
192
193
@@ -231,7 +232,7 @@ Keep these considerations in mind when choosing the storage account for your Dur
231
232
232
233
- For performance-sensitive workloads, configure a storage account other than the default account (`AzureWebJobsStorage`). Since Durable Functions uses Azure Storage heavily, using a dedicated storage account isolates Durable Functions storage usage from the internal usage by the Azure Functions host.
233
234
- You need standard general purpose Azure Storage accounts when using the Azure Storage provider. All other storage account types aren't currently supported.
234
-
- Legacy v1 general purpose storage accounts for Durable Functions is recommended. The newer v2 storage accounts can be more expensive for Durable Functions workloads. [Learn more about Azure Storage account types](../../storage/common/storage-account-overview.md).
235
+
- Legacy v1 general purpose storage accounts for Durable Functions are recommended. The newer v2 storage accounts can be more expensive for Durable Functions workloads. [Learn more about Azure Storage account types](../../storage/common/storage-account-overview.md).
235
236
236
237
## Orchestrator scale-out
237
238
@@ -373,7 +374,7 @@ The following table shows the [expected *maximum* throughput numbers for the sce
373
374
| External event processing | 50 events per second, per instance |
374
375
| Entity operation processing | 64 operations per second |
375
376
376
-
If you aren't seeing the throughput numbers you expect and your CPU and memory usage appears healthy, check whether the cause is related to [the health of your storage account](../../storage/common/storage-monitoring-diagnosing-troubleshooting.md#troubleshooting-guidance). The Durable Functions extension can put significant load on an Azure Storage account, and sufficiently high loads may result in storage account throttling.
377
+
If you aren't seeing the throughput numbers you expect and your CPU and memory usage appears healthy, check whether the cause is related to [the health of your storage account](/troubleshoot/azure/azure-storage/blobs/alerts/storage-monitoring-diagnosing-troubleshooting#troubleshooting-guidance). The Durable Functions extension can put significant load on an Azure Storage account, and sufficiently high loads may result in storage account throttling.
377
378
378
379
> [!TIP]
379
380
> In some cases, you can increase the throughput of external events, activity fan-in, and entity operations by increasing the value of the `controlQueueBufferThreshold` setting in your `host.json`. Increasing this value beyond its default causes the Durable Task Framework storage provider to use more memory to prefetch these events more aggressively, reducing delays associated with dequeueing messages from the Azure Storage control queues. For more information, see the [host.json](durable-functions-bindings.md#host-json) reference documentation.
0 commit comments