Durable Functions 2,0 Preview (Azure Functions)Durable Functions 2.0 preview (Azure Functions)

Durable functions is een uitbrei ding van Azure functions en Azure WebJobs waarmee u stateful functies in een serverloze omgeving kunt schrijven.Durable Functions is an extension of Azure Functions and Azure WebJobs that lets you write stateful functions in a serverless environment. Met de extensie worden status, controlepunten en het opnieuw opstarten voor u beheerd.The extension manages state, checkpoints, and restarts for you. Als u nog niet bekend bent met Durable Functions, raadpleegt u de documentatie van het overzicht.If you are not already familiar with Durable Functions, see the overview documentation.

Durable Functions 1. x is een functie voor het maken van een GA (algemeen beschikbaar) van Azure Functions, maar bevat ook verschillende subonderdelen die momenteel zijn opgenomen in de open bare preview.Durable Functions 1.x is a GA (Generally Available) feature of Azure Functions, but also contains several subfeatures that are currently in public preview. In dit artikel worden nieuwe uitgebrachte preview-functies beschreven en wordt uitgelegd hoe ze werken en hoe u ze kunt gaan gebruiken.This article describes newly released preview features and goes into details on how they work and how you can start using them.

Notitie

Deze preview-functies maken deel uit van een Durable Functions 2,0-release, die momenteel een Preview-kwaliteits release is met verschillende belang rijke wijzigingen.These preview features are part of a Durable Functions 2.0 release, which is currently a preview quality release with several breaking changes. De Azure Functions duurzame uitbreidings pakket builds kunt u vinden op nuget.org met versies in de vorm van 2.0.0-betax.The Azure Functions Durable extension package builds can be found on nuget.org with versions in the form of 2.0.0-betaX. Deze builds zijn niet bedoeld voor productie werkbelastingen en volgende releases kunnen extra belang rijke wijzigingen bevatten.These builds are not intended for production workloads, and subsequent releases may contain additional breaking changes.

Wijzigingen die fouten veroorzakenBreaking changes

Verschillende belang rijke wijzigingen worden geïntroduceerd in Durable Functions 2,0.Several breaking changes are introduced in Durable Functions 2.0. Bestaande toepassingen zijn niet naar verwachting compatibel met Durable Functions 2,0 zonder code wijzigingen.Existing applications are not expected to be compatible with Durable Functions 2.0 without code changes. In deze sectie vindt u enkele van de wijzigingen:This section lists some of the changes:

Host. json-schemaHost.json schema

Het volgende code fragment toont het nieuwe schema voor host. json.The following snippet shows the new schema for host.json. De belangrijkste wijzigingen die u moet herkennen, zijn de nieuwe subsecties:The main changes to be aware of are the new subsections:

  • "storageProvider"(en de "azureStorage" Subsectie) voor Storage-specifieke configuratie"storageProvider" (and the "azureStorage" subsection) for storage-specific configuration
  • "tracking"voor het bijhouden en registreren van configuratie"tracking" for tracking and logging configuration
  • "notifications"(en de "eventGrid" Subsectie) voor configuratie van gebeurtenis raster meldingen"notifications" (and the "eventGrid" subsection) for event grid notification configuration
{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": <string>,
      "storageProvider": {
        "azureStorage": {
          "connectionStringName": <string>,
          "controlQueueBatchSize": <int?>,
          "partitionCount": <int?>,
          "controlQueueVisibilityTimeout": <hh:mm:ss?>,
          "workItemQueueVisibilityTimeout": <hh:mm:ss?>,
          "trackingStoreConnectionStringName": <string?>,
          "trackingStoreNamePrefix": <string?>,
          "maxQueuePollingInterval": <hh:mm:ss?>
        }
      },
      "tracking": {
        "traceInputsAndOutputs": <bool?>,
        "traceReplayEvents": <bool?>,
      },
      "notifications": {
        "eventGrid": {
          "topicEndpoint": <string?>,
          "keySettingName": <string?>,
          "publishRetryCount": <string?>,
          "publishRetryInterval": <hh:mm:ss?>,
          "publishRetryHttpStatus": <int[]?>,
          "publishEventTypes": <string[]?>,
        }
      },
      "maxConcurrentActivityFunctions": <int?>,
      "maxConcurrentOrchestratorFunctions": <int?>,
      "extendedSessionsEnabled": <bool?>,
      "extendedSessionIdleTimeoutInSeconds": <int?>,
      "customLifeCycleNotificationHelperType": <string?>
  }
}

Als Durable functions 2,0 blijft stabiliseren, worden er meer wijzigingen aangebracht in de durableTask sectie host. json.As Durable Functions 2.0 continues to stabilize, more changes will be introduced to the durableTask section host.json. Zie Dit github-probleemvoor meer informatie over deze wijzigingen.For more information on these changes, see this GitHub issue.

Wijzigingen in de open bare interfacePublic interface changes

De verschillende ' context ' objecten die door Durable Functions worden ondersteund, bevatten abstracte basis klassen die zijn bedoeld voor gebruik in eenheids testen.The various "context" objects supported by Durable Functions had abstract base classes intended for use in unit testing. Als onderdeel van Durable Functions 2,0 zijn deze abstracte basis klassen vervangen door interfaces.As part of Durable Functions 2.0, these abstract base classes have been replaced with interfaces. Functie code die rechtstreeks gebruikmaakt van de concrete typen, wordt niet beïnvloed.Function code that uses the concrete types directly are not affected.

De volgende tabel bevat de belangrijkste wijzigingen:The following table represents the main changes:

Oud typeOld type Nieuw typeNew type
DurableOrchestrationClientBaseDurableOrchestrationClientBase IDurableOrchestrationClientIDurableOrchestrationClient
DurableOrchestrationContextBaseDurableOrchestrationContextBase IDurableOrchestrationContextIDurableOrchestrationContext
DurableActivityContextBaseDurableActivityContextBase IDurableActivityContextIDurableActivityContext
OrchestrationClientAttributeOrchestrationClientAttribute DurableClientAttributeDurableClientAttribute

Als een abstracte basis klasse virtuele methoden bevatte, zijn deze virtuele methoden vervangen door extensie methoden die zijn gedefinieerd in DurableContextExtensions.In the case where an abstract base class contained virtual methods, these virtual methods have been replaced by extension methods defined in DurableContextExtensions.

Entiteit functiesEntity functions

Vanaf Durable Functions v 2.0.0-alpha hebben we een nieuw concept voor entiteits functies geïntroduceerd.Starting in Durable Functions v2.0.0-alpha, we've introduced a new entity functions concept.

Met entiteits functies worden bewerkingen gedefinieerd voor het lezen en bijwerken van kleine stukjes status, ook wel duurzame entiteitengenoemd.Entity functions define operations for reading and updating small pieces of state, known as durable entities. Net als Orchestrator functions zijn entiteits functies functies met een speciaal trigger type, entiteits trigger.Like orchestrator functions, entity functions are functions with a special trigger type, entity trigger. In tegens telling tot Orchestrator-functies hebben entiteits functies geen specifieke code beperkingen.Unlike orchestrator functions, entity functions do not have any specific code constraints. Met entiteits functies wordt ook de status expliciet beheerd in plaats van impliciet de status via de controle stroom te vertegenwoordigen.Entity functions also manage state explicitly rather than implicitly representing state via control flow.

Op basis van de eerste feedback van gebruikers hebben we later ondersteuning toegevoegd voor een op klassen gebaseerd programmeer model voor entiteiten in Durable Functions v 2.0.0-beta1.Based on initial user feedback, we later added support for a class-based programming model for entities in Durable Functions v2.0.0-beta1.

Zie het artikel entiteits functies voor meer informatie.To learn more, see the entity functions article.

Duurzame HTTPDurable HTTP

Vanaf Durable Functions v 2.0.0-beta2 hebben we een nieuwe duurzame http -functie geïntroduceerd waarmee u het volgende kunt doen:Starting in Durable Functions v2.0.0-beta2, we've introduced a new Durable HTTP feature that allows you to:

  • HTTP-Api's rechtstreeks aanroepen vanuit Orchestration-functies (met enkele gedocumenteerde beperkingen)Call HTTP APIs directly from orchestration functions (with some documented limitations)
  • Implementeert automatische polling van HTTP 202-status van client zijdeImplements automatic client-side HTTP 202 status polling
  • Ingebouwde ondersteuning voor door Azure beheerde identiteitenBuilt-in support for Azure Managed Identities

Zie het artikel http-functies voor meer informatie.To learn more, see the HTTP features article.

Alternatieve opslag providersAlternate storage providers

Het duurzame taak raamwerk ondersteunt nu meerdere opslag providers, waaronder Azure Storage, Azure service bus, een in-Memory Emulatoren een experimentele redis -provider.The Durable Task Framework supports multiple storage providers today, including Azure Storage, Azure Service Bus, an in-memory emulator, and an experimental Redis provider. Tot nu toe daarentegen is de duurzame taak extensie voor Azure Functions alleen de Azure Storage provider ondersteund.However, until now, the Durable Task extension for Azure Functions only supported the Azure Storage provider. Vanaf Durable Functions 2,0 wordt de ondersteuning voor alternatieve opslag providers toegevoegd, te beginnen met de redis-provider.Starting with Durable Functions 2.0, support for alternate storage providers is being added, starting with the Redis provider.

Notitie

Durable Functions 2,0 ondersteunt alleen .NET Standard 2,0-compatibele providers.Durable Functions 2.0 only supports .NET Standard 2.0-compatible providers.

EmulatorEmulator

De DurableTask. emulator -provider is een lokaal geheugen, een niet-duurzame opslag provider, die geschikt is voor lokale test scenario's.The DurableTask.Emulator provider is a local memory, non-durable storage provider suitable for local testing scenarios. Het kan worden geconfigureerd met behulp van het volgende minimale host. json -schema:It can be configured using the following minimal host.json schema:

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": <string>,
      "storageProvider": {
        "emulator": { "enabled": true }
      }
    }
  }
}

Redis (experimenteel)Redis (experimental)

De provider DurableTask. redis houdt alle indelings status van een geconfigureerd redis-cluster.The DurableTask.Redis provider persists all orchestration state to a configured Redis cluster.

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": <string>,
      "storageProvider": {
        "redis": {
          "connectionStringName": <string>,
        }
      }
    }
  }
}

De connectionStringName moet verwijzen naar de naam van een app-instelling of omgevings variabele.The connectionStringName must reference the name of an app setting or environment variable. Deze app-instelling of omgevings variabele moet een redis connection string-waarde bevatten in de vorm Server: poort.That app setting or environment variable should contain a Redis connection string value in the form of server:port. Bijvoorbeeld localhost:6379 om verbinding te maken met een lokale redis-cluster.For example, localhost:6379 for connecting to a local Redis cluster.

Notitie

De redis-provider is momenteel experimentele en ondersteunt alleen functie-apps die worden uitgevoerd op één knoop punt.The Redis provider is currently experimental and only supports function apps running on a single node. Het is niet gegarandeerd dat de redis-provider ooit algemeen beschikbaar wordt gemaakt en kan worden verwijderd in een toekomstige versie.It is not guaranteed that the Redis provider will ever be made generally available, and it may be removed in a future release.