你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
此参考提供了进程内 SDK (2.x) SDK 与用于Durable Functions的独立辅助角色 SDK 之间的全面映射。 更新代码时,请将此页面与 迁移指南 一起使用。
客户端 API
| 进程内 (2.x) | 独立工人 |
|---|---|
IDurableOrchestrationClient |
DurableTaskClient |
IDurableOrchestrationClient.StartNewAsync |
DurableTaskClient.ScheduleNewOrchestrationInstanceAsync |
IDurableOrchestrationClient.GetStatusAsync |
DurableTaskClient.GetInstanceAsync |
IDurableOrchestrationClient.ListInstancesAsync |
DurableTaskClient.GetAllInstancesAsync |
IDurableOrchestrationClient.TerminateAsync |
DurableTaskClient.TerminateInstanceAsync |
IDurableOrchestrationClient.SuspendAsync |
DurableTaskClient.SuspendInstanceAsync |
IDurableOrchestrationClient.ResumeAsync |
DurableTaskClient.ResumeInstanceAsync |
IDurableOrchestrationClient.RaiseEventAsync |
DurableTaskClient.RaiseEventAsync |
IDurableOrchestrationClient.RewindAsync |
DurableTaskClient.RewindInstanceAsync |
IDurableOrchestrationClient.RestartAsync |
DurableTaskClient.RestartAsync |
IDurableOrchestrationClient.PurgeInstanceHistoryAsync |
DurableTaskClient.PurgeInstanceAsync 或 PurgeAllInstancesAsync |
IDurableOrchestrationClient.CreateCheckStatusResponse |
DurableTaskClient.CreateCheckStatusResponseAsync (扩展方法,采用 HttpRequestData) |
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync |
DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (扩展方法, timeout 替换为 CancellationToken) |
IDurableOrchestrationClient.CreateHttpManagementPayload |
DurableTaskClient.CreateHttpManagementPayload (扩展方法) |
DurableOrchestrationStatus |
OrchestrationMetadata |
DurableOrchestrationStatus.History |
从状态对象中删除。 请改用 DurableTaskClient.GetOrchestrationHistoryAsync。 |
PurgeHistoryResult |
PurgeResult |
OrchestrationStatusQueryCondition |
OrchestrationQuery |
OrchestrationStatusQueryResult |
AsyncPageable<OrchestrationMetadata> |
已删除的客户端 API
以下进程内 API 在独立辅助角色 SDK 中没有等效项:
| 已删除的 API | Workaround |
|---|---|
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync |
无等效项 |
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) |
GetInstanceAsync在循环或GetAllInstancesAsync查询筛选器中使用 |
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) |
PurgeInstanceAsync在循环或PurgeAllInstancesAsync筛选器中使用 |
跨任务中心重载(RaiseEventAsync, ReadEntityStateAsyncSignalEntityAsync具有connectionNametaskHubName/) |
仅支持同一任务中心操作 |
实体客户端 API
| 进程内 (2.x) | 独立工人 |
|---|---|
IDurableEntityClient.SignalEntityAsync |
DurableTaskClient.Entities.SignalEntityAsync |
IDurableEntityClient.ReadEntityStateAsync |
DurableTaskClient.Entities.GetEntityAsync |
IDurableEntityClient.ListEntitiesAsync |
DurableTaskClient.Entities.GetAllEntitiesAsync |
IDurableEntityClient.CleanEntityStorageAsync |
DurableTaskClient.Entities.CleanEntityStorageAsync (采用 CleanEntityStorageRequest 对象而不是布尔参数) |
业务流程上下文 API
| 进程内 (2.x) | 独立工人 |
|---|---|
IDurableOrchestrationContext |
TaskOrchestrationContext |
IDurableOrchestrationContext.InstanceId |
TaskOrchestrationContext.InstanceId |
IDurableOrchestrationContext.Name |
TaskOrchestrationContext.Name |
IDurableOrchestrationContext.CurrentUtcDateTime |
TaskOrchestrationContext.CurrentUtcDateTime |
IDurableOrchestrationContext.IsReplaying |
TaskOrchestrationContext.IsReplaying |
IDurableOrchestrationContext.NewGuid |
TaskOrchestrationContext.NewGuid |
IDurableOrchestrationContext.GetInput<T>() |
TaskOrchestrationContext.GetInput<T>() 或注入输入作为参数: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) |
IDurableOrchestrationContext.SetOutput |
删除。 使用协调器函数的返回值。 |
IDurableOrchestrationContext.CallActivityAsync |
TaskOrchestrationContext.CallActivityAsync |
IDurableOrchestrationContext.CallActivityWithRetryAsync |
TaskOrchestrationContext.CallActivityAsync 具有用于 TaskOptions 重试详细信息的参数 |
IDurableOrchestrationContext.CallSubOrchestratorAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync |
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync 具有用于 TaskOptions 重试详细信息的参数 |
IDurableOrchestrationContext.ContinueAsNew |
TaskOrchestrationContext.ContinueAsNew (请参阅 行为更改 以了解默认差异) |
IDurableOrchestrationContext.CallHttpAsync |
TaskOrchestrationContext.CallHttpAsync |
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) |
TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken)。 状态参数已删除。 |
IDurableOrchestrationContext.WaitForExternalEvent(string) (非泛型) |
删除。 使用 WaitForExternalEvent<T>(string, CancellationToken)。 |
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (含 defaultValue) |
删除。 使用 WaitForExternalEvent<T>(string, TimeSpan, CancellationToken),这会在超时时抛出 TaskCanceledException 。 |
IDurableOrchestrationContext.ParentInstanceId |
TaskOrchestrationContext.Parent.InstanceId |
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) |
TaskOrchestrationContext.CreateReplaySafeLogger<T>() 或 TaskOrchestrationContext.CreateReplaySafeLogger(string) |
IDurableOrchestrationContext.CreateEntityProxy<T> |
删除。 请直接使用Entities.CallEntityAsync或Entities.SignalEntityAsync。 |
IDurableOrchestrationContext.CallEntityAsync |
TaskOrchestrationContext.Entities.CallEntityAsync |
IDurableOrchestrationContext.SignalEntity |
TaskOrchestrationContext.Entities.SignalEntityAsync |
IDurableOrchestrationContext.LockAsync |
TaskOrchestrationContext.Entities.LockEntitiesAsync |
IDurableOrchestrationContext.IsLocked |
TaskOrchestrationContext.Entities.InCriticalSection() |
RetryOptions |
将 TaskOptions 替换为 TaskRetryOptions |
DurableActivityContext |
无等效项 |
DurableActivityContext.GetInput<T>() |
请将输入作为参数注入:MyActivity([ActivityTrigger] T input) |
DurableHttpRequest (WebJobs 命名空间) |
DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http 命名空间) |
DurableHttpResponse (WebJobs 命名空间) |
DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http 命名空间) |
实体 API
| 进程内 (2.x) | 独立工人 |
|---|---|
IDurableEntityContext |
TaskEntityContext |
IDurableEntityContext.EntityName |
TaskEntityContext.Id.Name |
IDurableEntityContext.EntityKey |
TaskEntityContext.Id.Key |
IDurableEntityContext.OperationName |
TaskEntityOperation.Name |
IDurableEntityContext.FunctionBindingContext |
删除。 添加 FunctionContext 为输入参数。 |
IDurableEntityContext.HasState |
TaskEntityOperation.State.HasState |
IDurableEntityContext.GetState |
TaskEntityOperation.State.GetState |
IDurableEntityContext.SetState |
TaskEntityOperation.State.SetState |
IDurableEntityContext.DeleteState |
TaskEntityOperation.State.SetState(null) |
IDurableEntityContext.GetInput |
TaskEntityOperation.GetInput |
IDurableEntityContext.Return |
删除。 请改用方法返回值。 |
IDurableEntityContext.SignalEntity |
TaskEntityContext.SignalEntity。 计划信号使用 SignalEntityOptions.SignalTime 而不是 DateTime 参数重载。 |
IDurableEntityContext.StartNewOrchestration |
TaskEntityContext.ScheduleNewOrchestration。 实例 ID 通过 StartOrchestrationOptions.InstanceId 而不是字符串参数进行设置。 |
IDurableEntityContext.DispatchAsync |
TaskEntityDispatcher.DispatchAsync。 已删除构造函数参数;请改用标准 DI。 |
IDurableEntityContext.BatchSize |
Removed |
IDurableEntityContext.BatchPosition |
Removed |
行为变更
在测试迁移的应用之前,请查看这些中断性行为更改。
序列化默认值已更改
默认序列化程序已从
警告
ContinueAsNew 默认更改: preserveUnprocessedEvents 参数默认值从 false (2.x) 更改为 true (独立)。 如果业务流程使用 ContinueAsNew 并依赖于被丢弃的未处理事件,请显式传递 preserveUnprocessedEvents: false。
注释
RestartAsync 默认更改: restartWithNewInstanceId 参数默认值从 true (2.x) 更改为 false (独立)。 如果代码调用 RestartAsync 并依赖于正在生成的新实例 ID,请显式传递 restartWithNewInstanceId: true。
其他行为更改
-
实体代理移除:
CreateEntityProxy<T>和类型化SignalEntityAsync<TEntityInterface>(Action<T>)委托重载在隔离工作器中不可用。 调用Entities.CallEntityAsync或Entities.SignalEntityAsync直接调用字符串形式的操作名称,而不是使用类型化代理接口。 -
WaitForCompletionOrCreateCheckStatusResponseAsync:
timeout参数已删除。 请使用CancellationToken并设置取消超时。 -
已删除跨任务中心操作:接受
taskHubName的进程内重载和connectionName参数在独立辅助角色中不可用。 仅支持相同任务中心的操作。 -
按 ID 删除的批处理操作:进程
GetStatusAsync(IEnumerable<string>)内和PurgeInstanceHistoryAsync(IEnumerable<string>)重载不可用。GetAllInstancesAsync与OrchestrationQuery筛选器一起使用,或单独调用GetInstanceAsync/PurgeInstanceAsync。 -
协调历史记录已移动:
DurableOrchestrationStatus.History(嵌入的JArray)不再是状态对象的一部分。 使用单独的DurableTaskClient.GetOrchestrationHistoryAsyncAPI。 -
删除了实体 DispatchAsync 构造函数参数:实体类通过标准依赖项注入激活。 在
Program.cs中注册您的实体的依赖项。 -
实体查询筛选器更改:
EntityQuery.EntityName被EntityQuery.InstanceIdStartsWith替换,EntityQuery.IncludeDeleted被EntityQuery.IncludeTransient替换。 -
CleanEntityStorageAsync 签名更改:采用
CleanEntityStorageRequest具有RemoveEmptyEntities属性的对象和ReleaseOrphanedLocks属性,而不是布尔参数。 -
独立辅助角色中的新 API:
DurableTaskClient.GetOrchestrationHistoryAsync扩展TaskOrchestrationContext.GetFunctionContext()方法没有进程内等效的 API。