Durable Functions: قيد المعالجة لتعيين واجهة برمجة تطبيقات العامل المعزولة

يوفر هذا المرجع تعيينا شاملا بين SDK قيد المعالجة (2.x) وSDK العامل المعزول Durable Functions. استخدم هذه الصفحة جنبا إلى جنب مع دليل الترحيل عند تحديث التعليمات البرمجية الخاصة بك.

واجهات برمجة التطبيقات (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>

واجهات برمجة تطبيقات العميل التي تمت إزالتها

لا تحتوي واجهات برمجة التطبيقات التالية قيد المعالجة على مكافئات في SDK العامل المعزول:

تم إزالة واجهة برمجة التطبيقات بديل مؤقت
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync لا يوجد ما يعادل
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) استخدام GetInstanceAsync في حلقة أو GetAllInstancesAsync مع عامل تصفية استعلام
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) استخدام PurgeInstanceAsync في حلقة أو PurgeAllInstancesAsync مع عامل تصفية
التحميلات الزائدة عبر مركز المهام (RaiseEventAsync، SignalEntityAsync، ReadEntityStateAsync معtaskHubName/connectionName ) يتم دعم عمليات مركز المهام نفسها فقط

واجهات برمجة تطبيقات عميل الكيان

قيد المعالجة (2.x) عامل معزول
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (يأخذ CleanEntityStorageRequest الكائن بدلا من معاملات البول)

واجهات برمجة تطبيقات سياق التنسيق

قيد المعالجة (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 مساحة الاسم)

واجهات برمجة التطبيقات الكيانية

قيد المعالجة (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. يتم تعيين معرف المثيل بواسطة بدلا StartOrchestrationOptions.InstanceId من معامل سلسلة.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. تمت إزالة معلمات البناء؛ استخدم DI القياسي بدلا من ذلك.
IDurableEntityContext.BatchSize تمت الإزالة
IDurableEntityContext.BatchPosition تمت الإزالة

التغيرات السلوكية

راجع تغييرات سلوك التوقف هذه قبل اختبار التطبيق الذي تم ترحيله.

تم تغيير التسلسل الافتراضي

تم تغيير المحول التسلسلي الافتراضي من Newtonsoft.Json إلى System.Text.Json. للحصول على خيارات التكوين، راجع Serialization والمثابرة في Durable Functions.

تحذير

تغيير الإعداد الافتراضي ContinueAsNew: تغير الإعداد preserveUnprocessedEvents الافتراضي للمعلمة من false (2.x) إلى true (معزول). إذا كان تنسيقك يستخدم ContinueAsNew ويعتمد على التخلص من أحداث غير معالجة، فرفض preserveUnprocessedEvents: falseبشكل صريح .

إشعار

تغيير الإعداد الافتراضي RestartAsync: تغير الوضع restartWithNewInstanceId الافتراضي للمعلمات من true (2.x) إلى false (معزول). إذا كان كودك يستدعي RestartAsync ويعتمد على معرف مثيل جديد يتم توليده، قم بتمرير restartWithNewInstanceId: true.

تغييرات سلوكية أخرى

  • إزالة وكيل الكيان: CreateEntityProxy<T> وتحميل المندوبين المكتوب SignalEntityAsync<TEntityInterface>(Action<T>) على الأنواع غير متاحة في العامل المعزول. استدعاء Entities.CallEntityAsync أو Entities.SignalEntityAsync مباشرة باستخدام أسماء العمليات النصية بدلا من استخدام واجهات وكيل مكتوبة.
  • انتظر ForCompletionOrCreateCheckStatusResponseAsync: تمت إزالة المعاملة timeout . استخدم A CancellationToken مع مهلة إلغاء بدلا من ذلك.
  • تمت إزالة العمليات عبر مركز المهام: التحميلات الزائدة قيد المعالجة التي قبلت taskHubName والمعلمات connectionName غير متوفرة في العامل المعزول. يتم دعم عمليات مركز المهام نفسها فقط.
  • تمت إزالة عمليات الدفعة حسب المعرف: لا تتوفر التحميلات الزائدة والتحميلات GetStatusAsync(IEnumerable<string>) قيد المعالجةPurgeInstanceHistoryAsync(IEnumerable<string>). استخدم GetAllInstancesAsync باستخدام OrchestrationQuery فلتر أو اتصل GetInstanceAsync/PurgeInstanceAsync بشكل فردي.
  • تم نقل تاريخ التوزيع الموسيقي: DurableOrchestrationStatus.History (التضمين JArray) لم يعد جزءا من كائن الحالة. استخدم واجهة برمجة التطبيقات المنفصلة DurableTaskClient.GetOrchestrationHistoryAsync .
  • تمت إزالة معلمات منشئ Entity DispatchAsync: يتم تنشيط فئات الكيان من خلال إدخال التبعية القياسية. سجل تبعيات الكيان الخاص بك في Program.cs.
  • تغييرات مرشح استعلام الكيان:EntityQuery.EntityName يتم استبداله ب EntityQuery.InstanceIdStartsWith، و EntityQuery.IncludeDeleted يستبدل ب EntityQuery.IncludeTransient.
  • تغيير توقيع CleanEntityStorageAsync: يأخذ كائنا CleanEntityStorageRequest مع RemoveEmptyEntities خصائص و ReleaseOrphanedLocks بدلا من معلمات bool.
  • واجهات برمجة التطبيقات الجديدة في العامل المعزول: DurableTaskClient.GetOrchestrationHistoryAsync وطريقة الملحق TaskOrchestrationContext.GetFunctionContext() ليس لها ما يعادل في العملية.