إنشاء أول دالة دائمة باستخدام JavaScript

Durable Functions هي امتداد لـ Azure Functions التي تمكن من كتابة دوال مناسبة في بيئة حساب بلا خادم. يدير الامتداد الحالة ونقاط الفحص ويعيد تشغيلها لك.

في هذه المقالة، نتعلم طريقة استخدام ملحق Visual Studio Code Azure Functions لإنشاء دالة "hello world" دائمة واختبارها محلية. هذه الدالة ستنظم عمليات الاستدعاء لدوال أخرى وتسلسلها. ثم نشر رمز الدالة إلى Azure.

هام

يتغير محتوى هذه المقالة استنادا إلى اختيارك لنموذج البرمجة Node.js في المحدد في أعلى الصفحة. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. تعرف على المزيد حول الاختلافات بين v3 وv4 في دليل الترحيل.

لقطة شاشة لنافذة Edge. تظهر النافذة إخراج استدعاء دالة دائمة بسيطة في Azure.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي:

  • تتطلب الدوال الدائمة حساب تخزين في Azure. تحتاج إلى شتراك Azure.
  • تأكد من تثبيت الإصدار 16.x+ من Node.js .
  • تأكد من تثبيت الإصدار 18.x+ من Node.js .

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

إنشاء مشروعك المحلي

في هذا القسم، يمكن استخدامVisual Studio Code لإنشاء مشروع Azure Functions محلي.

  1. في Visual Studio Code، اضغط على F1 (أو Ctrl/Cmd+Shift+P) لفتح لوحة الأوامر. في لوحة الأوامر، ابحث عن Azure Functions: Create New Project... واختره.

    لقطة شاشة للوحة أوامر Visual Studio Code. الأمر المعنون

  2. اختيار موقع مجلد فارغ للمشروع، واختيار تحديد.

  1. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد اللغة الخاصة بمشروع تطبيق الدالة JavaScript إنشاء مشروع Node.js Functions محلي.
    تحديد نموذج برمجة JavaScript الطراز V3 اختر نموذج البرمجة V3.
    تحديد إصدار وظائف Azure Functions v4 سيظهر لك هذا الخيار فقط عندما لا تكون الأدوات الأساسية مثبتة مسبقاً. في هذه الحالة، تُثبت الأدوات الأساسية في المرة الأولى التي يُشغل فيها التطبيق.
    تحديد قالب للدالة الأولى لمشروعك تخطي حالياً
    تحديد طريقة فتح مشروعك فتحه في النافذة الحالية إعادة فتح التعليمات البرمجية لتطبيق VS في المجلد المحدد.
  1. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد اللغة الخاصة بمشروع تطبيق الدالة JavaScript إنشاء مشروع Node.js Functions محلي.
    تحديد نموذج برمجة JavaScript الطراز V4 اختر نموذج البرمجة V4.
    تحديد إصدار وظائف Azure Functions v4 سيظهر لك هذا الخيار فقط عندما لا تكون الأدوات الأساسية مثبتة مسبقاً. في هذه الحالة، تُثبت الأدوات الأساسية في المرة الأولى التي يُشغل فيها التطبيق.
    تحديد قالب للدالة الأولى لمشروعك تخطي حالياً
    تحديد طريقة فتح مشروعك فتحه في النافذة الحالية إعادة فتح التعليمات البرمجية لتطبيق VS في المجلد المحدد.

تُجرى التعليمات البرمجية لتطبيق Visual Studio عملية تثبيت الأدوات الأساسية لدوال Azure إذا لزم الأمر. كما أنها تُشنأ مشروعاً لتطبيق دالة في مجلد. يحتوي هذا المشروع على ملفي التكوين host.json وlocal.settings.json.

package.json يتم أيضا إنشاء ملف في المجلد الجذر.

تثبيت حزمة Durable Functions npm

للعمل مع "دوال دائمة" في تطبيق Node.js function، يمكنك استخدام مكتبة تسمى durable-functions.

لاستخدام نموذج البرمجة V4، تحتاج إلى تثبيت إصدار المعاينة v3.x من durable-functions.

  1. استخدم القائمة عرض أو Ctrl + Shift + ' لفتح محطة طرفية جديدة في VS Code.
  1. قم بتثبيت حزمة npm durable-functions عن طريق تشغيل npm install durable-functions في الدليل الجذر من تطبيق الدوال.
  1. durable-functions قم بتثبيت إصدار معاينة حزمة npm عن طريق التشغيل npm install durable-functions@preview في الدليل الجذر لتطبيق الوظائف.

إنشاء الدوال الخاصة بك

يحتوي تطبيق "Durable Functions" الأساسي على ثلاث دوال:

  • دالة المنسق - تصف سير عمل ينسق الدوال الأخرى.
  • دالة النشاط - تستدعيها "دالة المنسق"، وتُنفذ العمل، وتُرجع قيمة بشكل اختياري.
  • دالة العميل - هي دالة عادية من Azure Function وتبدأ بدالة منسق. يستخدم هذا المثال دالة HTTP المشغلة.

دالة المنسق

يمكن استخدام قالب لإنشاء تعليمة برمجية لدالة دائمة في مشروعك.

  1. في لوحة الأوامر، ابحث عن Azure Functions: Create Function... واختره.

  2. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد قالب لدالتك منسق Durable Functions إنشاء تنسيق Durable Functions
    اختر نوع تخزين دائم. Azure Storage (افتراضي) حدد الواجهة الخلفية للتخزين المستخدمة ل Durable Functions.
    منح الدالة اسماً HelloOrchestrator اسم دالتك الدائمة

لقد قمت بإضافة منسق لتنسيق وظائف النشاط. افتح HelloOrchestrator/index.js لرؤية دالة المنسق. كل استدعاء لـ context.df.callActivity يستدعي دالة نشاط باسم Hello.

بعد ذلك، تُضاف دالة النشاط Hello المشار إليها.

دالة النشاط

  1. في لوحة الأوامر، ابحث عن Azure Functions: Create Function... واختره.

  2. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد قالب لدالتك نشاط Durable Functions إنشاء دالة نشاط
    منح الدالة اسماً أهلا اسم دالة النشاط لديك

لقد اُضيفت دالة النشاط Hello التي يستدعيها المنسق. افتح Hello/index.js للتأكد من أنه يأخذ الاسم كإدخال ويعرض تحية. وظيفة النشاط هي المكان الذي تقوم فيه بتنفيذ "العمل الحقيقي" في سير العمل الخاص بك: عمل مثل إجراء استدعاء قاعدة بيانات أو إجراء بعض الحسابات غير المحددة.

وأخيراً، ستضيف دالة تشغيل HTTP التي تبدأ التنسيق.

دالة العميل (بادئ HTTP)

  1. في لوحة الأوامر، ابحث عن Azure Functions: Create Function... واختره.

  2. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد قالب لدالتك بادئ Durable Functions HTTP إنشاء دالة بادئ HTTP
    منح الدالة اسماً DurableFunctionsHttpStart اسم دالة النشاط لديك
    مستوى التخويل مجهول لأغراض العرض التوضيحي، السماح باستدعاء الدالة دون مصادقة

وأخيراً، ستضيف دالة مشغلة بـ HTTP التي تبدأ التنسيق. افتح DurableFunctionsHttpStart/index.js للتأكد من استخدام client.startNew لبدء تنسيق جديد. بعد ذلك، الدالة ستستخدم client.createCheckStatusResponse لإرجاع استجابة HTTP تحتوي على عناوين URL التي يمكن استخدامها لمراقبة التنسيق الجديد وإدارته.

لديك الآن تطبيق "Durable Functions" يمكن تشغيله محلياً وتوزيعه في Azure.

تتمثل إحدى فوائد نموذج البرمجة V4 في مرونة المكان الذي تكتب فيه وظائفك. في نموذج V4، يمكنك استخدام قالب واحد لإنشاء جميع الوظائف الثلاث في ملف واحد في مشروعك.

  1. في لوحة الأوامر، ابحث عن Azure Functions: Create Function... واختره.

  2. باتباع المطالبات، يمكن تقديم المعلومات التالية:

    المطالبة قيمة ‏‏الوصف
    تحديد قالب لدالتك منسق Durable Functions أنشئ ملفا بتنسيق Durable Functions ودالة Activity ودالة بدء Durable Client.
    اختيار نوع تخزين دائم Azure Storage (افتراضي) حدد الواجهة الخلفية للتخزين المستخدمة ل Durable Functions.
    منح الدالة اسماً hello الاسم المستخدم لوظائفك الدائمة

افتح src/functions/hello.js لعرض الوظائف التي قمت بإنشائها.

لقد أنشأت منسقا يسمى helloOrchestrator لتنسيق وظائف النشاط. كل استدعاء لاستدعاء context.df.callActivity دالة نشاط تسمى hello.

لقد أضفت أيضا دالة hello النشاط التي يتم استدعاؤها بواسطة المنسق. في نفس الملف، يمكنك أن ترى أنه يأخذ اسما كمدخل ويعيد تحية. وظيفة النشاط هي المكان الذي تقوم فيه بتنفيذ "العمل الحقيقي" في سير العمل الخاص بك: عمل مثل إجراء استدعاء قاعدة بيانات أو إجراء بعض الحسابات غير المحددة.

وأخيرا، أضفت أيضا دالة مشغلة من HTTP تبدأ تزامنا. في نفس الملف، يمكنك أن ترى أنه يستخدم client.startNew لبدء تزامن جديد. بعد ذلك، الدالة ستستخدم client.createCheckStatusResponse لإرجاع استجابة HTTP تحتوي على عناوين URL التي يمكن استخدامها لمراقبة التنسيق الجديد وإدارته.

لديك الآن تطبيق "Durable Functions" يمكن تشغيله محلياً وتوزيعه في Azure.

اختبِر الدالة محليًا

تسمح لك الأدوات الأساسية لدوال Azure بتشغيل مشروع دوال Azure على جهاز الحاسوب بغرض التطوير المحلي لديك. تتم مطالبتك بتثبيت هذه الأدوات في المرة الأولى التي تبدأ فيها دالة من التعليمات البرمجية لتطبيق Visual Studio.

  1. لاختبار الدالة، قم بتعيين نقطة توقف في Hello التعليمة البرمجية لدالة النشاط (Hello/index.js). تحديد F5، أو تحديد Debug: Start Debugging من لوحة الأوامر لبدء مشروع تطبيق الدالة. تُعرج نتائج الأدوات الأساسية في لوحة Terminal.
  1. لاختبار الدالة، قم بتعيين نقطة توقف في التعليمات البرمجية لدالة hello النشاط (src/functions/hello.js). تحديد F5، أو تحديد Debug: Start Debugging من لوحة الأوامر لبدء مشروع تطبيق الدالة. تُعرج نتائج الأدوات الأساسية في لوحة Terminal.

إشعار

يمكن الرجوع إلى Durable Functions Diagnostics للحصول على مزيد من المعلومات حول التصحيح.

  1. يتطلب Durable Functions حساباً في Azure Storage. عندما يوجه VS Code بتحديد حساب تخزين، يجب اختيار تحديد حساب تخزين.

    لقطة شاشة لنافذة تنبيه Visual Studio Code. تظهر النافذة

  2. بعد التوجيهات، أدخل المعلومات التالية لإنشاء حساب تخزين جديد في Azure.

    المطالبة قيمة ‏‏الوصف
    حدد الاشتراك اسم الاشتراك حدد اشتراكك في Azure.
    تحديد حساب تخزين إنشاء حساب تخزين جديد
    إدخال اسم حساب التخزين الجديد اسم مميز اسم حساب التخزين المطلوب إنشاؤه
    تحديد مجموعة موارد اسم مميز اسم مجموعة الموارد المطلوب إنشاؤها
    تحديد موقع المنطقة تحديد منطقة قريبة منك
  3. في لوحة Terminal، نسخ نقطة النهاية لعنوان URL الخاص بدالتك التي تعمل محلياً.

    لقطة شاشة للوحة محطة Visual Studio البرمجية. تعرض المحطة الطرفية إخراج تشغيل تطبيق Durable Functions محليا. يتم تمييز الجدول المسمى

  1. باستخدام المستعرض، أو أداة مثل Postman أو cURL، إرسال طلب HTTP POST إلى نقطة نهاية عنوان URL. استبدال الجزء الأخير باسم دالة المُنسق (HelloOrchestrator). يجب أن يماثل عنوان URL http://localhost:7071/api/orchestrators/HelloOrchestrator.
  1. باستخدام المستعرض، أو أداة مثل Postman أو cURL، إرسال طلب HTTP POST إلى نقطة نهاية عنوان URL. استبدال الجزء الأخير باسم دالة المُنسق (helloOrchestrator). يجب أن يماثل عنوان URL http://localhost:7071/api/orchestrators/helloOrchestrator.

الاستجابة هي النتيجة الأولية من الدالة HTTP مما يتيح معرفة أن التنسيق الدائم قد بدأ بنجاح. لم تصل بعد إلى النتيجة النهائية للتنسيق. تتضمن الاستجابة بعض عناوين URL المفيدة. أما الآن، دعونا نستعلم عن حالة التنسيق.

  1. انسخ قيمة عنوان URL في statusQueryGetUri ولصقها في شريط عناوين المتصفح ونفذ الطلب. بدلاً من ذلك، يمكن أيضاً الاستمرار في استخدام Postman لإصدار طلب GET.

    يستعلم الطلب عن مثيل التنسيق للحالة. يلزم الحصول على استجابة في نهاية المطاف تبين لنا اكتمال المثيل وتشمل مخرجات أو نتائج الدالة الدائمة. ستبدو مثل هذا:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. لإيقاف تصحيح الأخطاء، اضغط على Shift + F5 في التعليمات البرمجية لتطبيق VS.

بعد التحقق من عمل الدالة بشكل صحيح على جهاز الحاسوب المحلي، حان الوقت لنشر المشروع على Azure.

تسجيل الدخول إلى Azure

قبل أن تتمكن من إنشاء موارد Azure أو نشر تطبيقك، يجب عليك تسجيل الدخول إلى Azure.

  1. إذا لم تُسجل الدخول بالفعل، فاختر رمز Azure في شريط "النشاط". ثم في منطقة "الموارد"، اختر "تسجيل الدخول إلى Azure...".

    لقطة شاشة تعرض تسجيل الدخول إلى نافذة Azure في VS Code.

    إذا سجلت الدخول بالفعل وشاهدت اشتراكاتك الحالية، فانتقل إلى القسم التالي. إذا لم يكن لديك حساب Azure بعد، فاختر إنشاء حساب Azure.... يمكن للطلاب اختيار إنشاء حساب Azure للطلاب....

  2. اخترعند مطالبتك في مستعرض حساب Azure الخاص بك، ثم سجل الدخول باستخدام بيانات اعتماد حساب Azure. في حال إنشاء حساب جديد، يمكنك تسجيل الدخول بعد إنشاء حسابك.

  3. يمكنك بعد تسجيل الدخول بنجاح إغلاق نافذة المتصفح الجديدة. تظهر الاشتراكات التي تنتمي إلى حساب Azure الخاص بك في الشريط الجانبي.

إنشاء تطبيق الوظائف في Azure

يمكنك، في هذا القسم، إنشاء تطبيق وظائف وموارد ذات الصلة في اشتراك Azure.

  1. حدد رمز Azure في شريط "النشاط". ثم في منطقة "الموارد"، حدد الرمز + وحدد الخيار "إنشاء تطبيق الوظائف في Azure".

    أنشئ موردًا في اشتراك Azure الخاص بك

  2. قدِّم المعلومات التالية في المطالبات:

    المطالبة التحديد
    تحديد الاشتراك حدد الاشتراك المطلوب استخدامه. لن تظهر هذه المطالبة عندما يكون لديك اشتراك واحد فقط مرئي ضمن «الموارد».
    أدخل اسماً فريداً عالمياً لتطبيق الوظائف اكتب اسماً صالحاً في مسار URL. يتم التحقق من صحة الاسم الذي تكتبه للتأكد من أنه فريد في دالات Azure.
    تحديد مكدس ذاكرة مؤقتة لوقت التشغيل اختر إصدار اللغة الذي كنت تعمل عليه محلياً.
    حدد موقعاً للموارد الجديدة للحصول على أداء أفضل، اختر منطقة قريبة منك.

    يعرض الملحق حالة الموارد الفردية في أثناء إنشائها في Azure في لوحة Azure: سجل النشاط.

    سجل إنشاء مورد Azure

  3. يتم، عند الانتهاء من الإنشاء، إنشاء موارد Azure التالية في الاشتراك. تسمى الموارد استنادًا إلى اسم تطبيق الوظائف الخاص بك:

    • مجموعة الموارد، وهي حاوية منطقية للموارد ذات الصلة.
    • حساب التخزين بخدمة Azure: هو مورد تخزين يحتفظ بالحالة ومعلومات أخرى حول المشروع.
    • تطبيق الوظيفة، الذي يوفر البيئة لتنفيذ التعليمة البرمجية للوظيفة. يتيح لك تطبيق الوظيفة تجميع الوظائف كوحدة منطقية لإدارة الموارد وتوزيعها ومشاركتها بشكل أسهل مع نفس خطة المضيف.
    • خطة «خدمة التطبيقات» التي تحدد المضيف الأساسي لتطبيق الوظائف.
    • مثيل Application Insights متصل بتطبيق الوظائف الذي يتتبع استخدام الوظائف في التطبيق.

    يعرض تنبيه بعد إنشاء تطبيق الوظيفة وتطبيق حزمة التوزيع.

    تلميح

    افتراضياً، يتم إنشاء موارد Azure المطلوبة من قبل تطبيق الدالة الخاص بك استناداً إلى اسم تطبيق الدالة الذي تقدمه. يتم أيضًا، بشكل افتراضي، إنشاؤها في مجموعة الموارد الجديدة ذاتها باستخدام تطبيق الوظائف. إذا كنت تريد إما تخصيص أسماء هذه الموارد أو إعادة استخدام الموارد الحالية، فأنت بحاجة إلى نشر المشروع بخيارات إنشاء متقدمة بدلاً من ذلك.

نشر المشروع في Azure

هام

يستبدل التوزيع إلى تطبيق وظائف موجود دائمًا محتويات هذا التطبيق في Azure.

  1. في منطقة الموارد لنشاط Azure، حدد موقع مورد تطبيق الدالة الذي أنشأته للتو، وانقر بزر الماوس الأيمن فوق المورد، وحدد Deploy to function app....

  2. عند مطالبتك بالكتابة فوق عمليات التوزيع السابقة، حدد Deploy لنشر التعليمات البرمجية للدالة إلى مورد تطبيق الوظائف الجديد.

  3. بعد إتمام عملية التوزيع، حدد عرض الإخراج لعرض نتائج الإنشاء والتوزيع، بما في ذلك موارد Azure التي أنشأتها. إذا فاتك الإخطار، فحدد أيقونة الجرس في الزاوية السفلية اليسرى لرؤيته مرة أخرى.

    لقطة شاشة تظهر نافذة View Output

اختبر الدالة في Azure

إشعار

لاستخدام نموذج برمجة عقدة V4، تأكد من تشغيل تطبيقك على الإصدار 4.25 على الأقل من وقت تشغيل Azure Functions.

  1. انسخ عنوان URL لمشغل بروتوكول نقل النص الفائق من لوحة الإخراج. يجب أن يكون عنوان URL الذي يستدعي الدالة التي شُغلت بواسطة HTTP بهذا التنسيق: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. انسخ عنوان URL لمشغل بروتوكول نقل النص الفائق من لوحة الإخراج. يجب أن يكون عنوان URL الذي يستدعي الدالة التي شُغلت بواسطة HTTP بهذا التنسيق: https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. الصق عنوان URL الجديد هذا لتقديم طلب بروتوكول نقل النص الفائق في شريط عنوان متصفحك. يجب الحصول على نفس استجابة الحالة كما كانت من قبل عند استخدام التطبيق المنشور.

الخطوات التالية

لقد استخدمت Visual Studio Code لإنشاء ونشر تطبيق دوال دائمة تستخدم JavaScript.