ملحق Dapr ل Azure Functions
ملحق Dapr ل Azure Functions هو مجموعة من الأدوات والخدمات التي تسمح للمطورين بدمج Azure Functions بسهولة مع النظام الأساسي لوقت تشغيل التطبيق الموزع (Dapr).
Azure Functions هي خدمة حساب مستندة إلى الحدث توفر مجموعة من المشغلات والروابط للاتصال بسهولة بخدمات Azure الأخرى. يوفر Dapr مجموعة من الكتل الإنشائية وأفضل الممارسات لبناء التطبيقات الموزعة، بما في ذلك الخدمات المصغرة وإدارة الحالة والمراسلة pub/sub والمزيد.
مع التكامل بين Dapr و Functions، يمكنك إنشاء وظائف تتفاعل مع الأحداث من Dapr أو الأنظمة الخارجية.
الإجراء | الاتجاه | نوع |
---|---|---|
المشغل على ربط إدخال Dapr | غير متوفر | daprBindingTrigger |
تشغيل استدعاء خدمة Dapr | غير متوفر | daprServiceInvocationTrigger |
المشغل على اشتراك موضوع Dapr | غير متوفر | daprTopicTrigger |
سحب حالة Dapr لتنفيذ | في | daprState |
سحب أسرار Dapr لتنفيذ | في | daprSecret |
حفظ قيمة في حالة Dapr | صادر | daprState |
استدعاء تطبيق Dapr آخر | صادر | daprInvoke |
نشر رسالة إلى موضوع Dapr | صادر | daprPublish |
إرسال قيمة إلى ربط إخراج Dapr | صادر | daprBinding |
تثبيت الملحق
تعتمد حزمة NuGet الملحقة التي تقوم بتثبيتها على وضع C# قيد المعالجة أو عملية العامل المعزولة التي تستخدمها في تطبيق الوظائف الخاص بك:
تثبيت الحزمة
يمكنك إضافة الملحق عن طريق إضافة التعليمات البرمجية التالية أو استبدالها في ملفك host.json
:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
تمكين Dapr
يمكنك تكوين Dapr باستخدام مختلف [الوسيطات والتعليقات التوضيحية][dapr-args] استنادا إلى سياق وقت التشغيل. يمكنك تكوين Dapr ل Azure Functions من خلال قناتين:
- قوالب البنية الأساسية كتعليمية (IaC)، كما هو الحال في قوالب Bicep أو Azure Resource Manager (ARM)
- مدخل Microsoft Azure
عند استخدام قالب IaC، حدد الوسيطات التالية في properties
قسم من تعريف مورد تطبيق الحاوية.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
تعتبر قيم تكوين Dapr أعلاه تغييرات في نطاق التطبيق. عند تشغيل تطبيق حاوية في وضع مراجعة متعددة، لن تؤدي التغييرات التي يتم إجراؤها على هذه الإعدادات إلى إنشاء مراجعة جديدة. بدلا من ذلك، تتم إعادة تشغيل جميع المراجعات الموجودة للتأكد من تكوينها بأحدث القيم.
عند تكوين Dapr باستخدام مدخل Microsoft Azure، انتقل إلى تطبيق الوظائف وحدد Dapr من القائمة اليمنى:
منافذ Dapr والمستمعين
عند تشغيل دالة من Dapr، يعرض الملحق المنفذ 3001
تلقائيا للاستماع إلى الطلبات الواردة من Dapr sidecar.
هام
يتم عرض المنفذ 3001
والاستماع إليه فقط إذا تم تعريف مشغل Dapr في تطبيق الوظائف. عند استخدام Dapr، ينتظر sidecar لتلقي استجابة من المنفذ المحدد قبل إكمال إنشاء مثيل. لا تقم بتعريف التعليق التوضيحي dapr.io/port
أو --app-port
ما لم يكن لديك مشغل. قد يؤدي القيام بذلك إلى تأمين التطبيق الخاص بك من Dapr sidecar.
إذا كنت تستخدم روابط الإدخال والإخراج فقط، فلا يلزم كشف المنفذ 3001
أو تعريفه.
بشكل افتراضي، عندما تحاول Azure Functions الاتصال ب Dapr، فإنه يستدعي Dapr عبر المنفذ الذي تم حله من متغير DAPR_HTTP_PORT
البيئة . إذا كان هذا المتغير فارغا، فسيتم تعيينه افتراضيا إلى المنفذ 3500
.
يمكنك تجاوز عنوان Dapr المستخدم بواسطة روابط الإدخال والإخراج عن طريق تعيين الخاصية DaprAddress
في function.json
للربط (أو السمة). بشكل افتراضي، يستخدم http://localhost:{DAPR_HTTP_PORT}
.
لا يزال تطبيق الوظائف يعرض منفذا آخر ونقطة نهاية لأشياء مثل مشغلات HTTP، والتي يتم تعيينها افتراضيا محليا إلى 7071
، ولكن في الحاوية، يتم تعيينها افتراضيا إلى 80
.
أنواع الربط
تعتمد أنواع الربط المعتمدة ل .NET على كل من إصدار الملحق ووضع تنفيذ C#، والتي يمكن أن تكون واحدة مما يلي:
مكتبة الفئات قيد المعالجة عبارة عن دالة C# مجمعة يتم تشغيلها في نفس العملية مثل وقت تشغيل الدالات.
يدعم ملحق Dapr أنواع المعلمات وفقا للجدول أدناه.
Binding | أنواع المعلمات |
---|---|
مشغل Dapr | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
إدخال Dapr | daprState daprSecret |
إخراج Dapr | daprState daprInvoke daprPublish daprBinding |
للحصول على أمثلة باستخدام هذه الأنواع، انظر إلي مستودع GitHub لملحق البرنامج.
جرب ملحق Dapr ل Azure Functions
تعرف على كيفية استخدام ملحق Dapr ل Azure Functions عبر العينات المتوفرة.
العينات | الوصف |
---|---|
التشغيل السريع | ابدأ باستخدام ربط Dapr Pub/sub و HttpTrigger . |
Dapr Kafka | تعرف على كيفية استخدام ملحق Azure Functions Dapr مع مكون Kafka bindings Dapr. |
.NET قيد المعالجة | تعرف على كيفية استخدام نموذج Azure Functions قيد المعالجة للتكامل مع مكونات Dapr المتعددة في .NET، مثل استدعاء الخدمة و Pub/sub و Bindings و State Management. |
.NET Isolated | التكامل مع مكونات Dapr في .NET باستخدام نموذج تنفيذ Azure Functions خارج proc (OOP). |
جرب ملحق Dapr ل Azure Functions
تعرف على كيفية استخدام ملحق Dapr ل Azure Functions عبر العينات المتوفرة.
العينات | الوصف |
---|---|
وظائف Java | تعرف على كيفية استخدام ملحق Azure Functions Dapr باستخدام Java. |
جرب ملحق Dapr ل Azure Functions
تعرف على كيفية استخدام ملحق Dapr ل Azure Functions عبر العينات المتوفرة.
العينات | الوصف |
---|---|
التشغيل السريع | ابدأ باستخدام ربط Dapr Pub/sub و HttpTrigger . |
Dapr Kafka | تعرف على كيفية استخدام ملحق Azure Functions Dapr مع مكون Kafka bindings Dapr. |
جافا سكريبت | تشغيل تطبيق دالة JavaScript Dapr والتكامل مع استدعاء خدمة Dapr و Pub/sub و Bindings و State Management باستخدام Azure Functions. |
جرب ملحق Dapr ل Azure Functions
تعرف على كيفية استخدام ملحق Dapr ل Azure Functions عبر العينات المتوفرة.
العينات | الوصف |
---|---|
وظائف PowerShell | تعرف على كيفية استخدام ملحق Azure Functions Dapr مع PowerShell. |
جرب ملحق Dapr ل Azure Functions
تعرف على كيفية استخدام ملحق Dapr ل Azure Functions عبر العينات المتوفرة.
العينات | الوصف |
---|---|
Dapr Kafka | تعرف على كيفية استخدام ملحق Azure Functions Dapr مع مكون Kafka bindings Dapr. |
Python v1 | قم بتشغيل تطبيق Python بحجم Dapr واستخدم نموذج برمجة Azure Functions Python v1 للتكامل مع مكونات Dapr. |
Python v2 | قم بتشغيل تطبيق Dapr باستخدام نموذج برمجة Azure Functions Python v2 للتكامل مع مكونات Dapr. |
استكشاف الأخطاء وإصلاحها
يصف هذا القسم كيفية استكشاف المشكلات التي يمكن أن تحدث عند استخدام ملحق Dapr لوظائف Azure وإصلاحها.
تأكد من تمكين Dapr في بيئتك
إذا كنت تستخدم روابط ومشغلات Dapr في Azure Functions، ولم يتم تمكين Dapr في بيئتك، فقد تتلقى رسالة الخطأ: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
لتمكين Dapr في بيئتك:
إذا تم نشر Azure Function في Azure Container Apps، فراجع إرشادات تمكين Dapr لملحق Dapr ل Azure Functions.
إذا تم نشر Azure Function في Kubernetes، فتحقق من أن تكوين YAML الخاص بالنشر يحتوي على التعليقات التوضيحية التالية:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...
إذا كنت تقوم بتشغيل Azure Function محليا، فقم بتشغيل الأمر التالي للتأكد من تشغيل تطبيق الوظائف باستخدام Dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
التحقق من قيمة منفذ التطبيق في تكوين Dapr
يبدأ ملحق Dapr ل Azure Functions خادم HTTP على المنفذ 3001
بشكل افتراضي. يمكنك تكوين هذا المنفذ باستخدام DAPR_APP_PORT
متغير البيئة.
إذا قمت بتوفير قيمة منفذ تطبيق غير صحيحة عند تشغيل تطبيق Azure Functions، فقد تتلقى رسالة الخطأ: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error).
لحل رسالة الخطأ هذه:
في إعدادات Dapr لتطبيق الحاوية:
إذا كنت تستخدم مشغل Dapr في التعليمات البرمجية الخاصة بك، فتحقق من تعيين منفذ التطبيق إلى
3001
أو إلى قيمةDAPR_APP_PORT
متغير البيئة.إذا كنت لا تستخدم مشغل Dapr في التعليمات البرمجية الخاصة بك، فتحقق من عدم تعيين منفذ التطبيق. يجب أن تكون فارغةً.
تحقق من توفير قيمة منفذ التطبيق الصحيحة في تكوين Dapr.
إذا كنت تستخدم Azure Container Apps، فحدد منفذ التطبيق في Bicep:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
إذا كنت تستخدم بيئة Kubernetes، فقم بتعيين
dapr.io/app-port
التعليق التوضيحي:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
إذا كنت تقوم بالتطوير محليا، فتحقق من تعيين
--app-port
عند تشغيل تطبيق الوظائف باستخدام Dapr:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start