تشغيل التعليمات البرمجية حسب الطلب باستخدام "Azure Functions"

مكتمل

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

أزرار التشغيل

تستند الوظائف إلى الحدث، ما يعني أنها تعمل استجابةً لحدث ما. يدعى نوع الحدث الذي يبدأ الوظيفة مشغلاً. يجب تكوين كل دالة مع مشغل واحد تحديدًا.

يمكنك تشغيل تنفيذ الدالة باستخدام طلبات HTTP وموقت مجدول وأحداث من خدمات Azure التالية:

خدمة Azure وصف المشغل
مخزن البيانات الثنائية الكبيرة يبدأ تشغيل الوظيفة عند الكشف عن Blob جديد أو محدث.
Azure Cosmos DB يبدأ تشغيل الوظيفة عند الكشف عن عمليات إدخال وتحديثات.
Event Grid بدء تشغيل وظيفة عند تلقي حدث من "شبكة الأحداث".
مراكز الأحداث بدء تشغيل دالة عند تلقي حدث من مراكز الأحداث.
مخزن قائمة الانتظار يبدأ تشغيل الوظيفة عند تلقي عنصر جديد في قائمة انتظار. يتم توفير رسالة قائمة الانتظار كإدخال إلى الوظيفة.
ناقل الخدمة يبدأ تشغيل الوظيفة استجابة للرسائل من قائمة انتظار ناقل الخدمة.

Bindings

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

يعتبر المشغل نوعًا من ربط الإدخال الذي لديه القدرة على بدء تنفيذ بعض التعليمات البرمجية.

يوفر Azure عددًا كبيرًا من الروابط للاتصال بخدمات التخزين والمراسلة المختلفة.

تعريف عينة ربط

لنلقِ نظرة على مثال لتكوين وظيفة باستخدام ربط الإدخال (المشغل) وربط الإخراج. لنفترض أننا نريد كتابة صف جديد إلى تخزين Azure Table كلما ظهرت رسالة جديدة في Azure Queue Storage. يمكن تنفيذ هذا السيناريو باستخدام مشغّل Azure Queue Storage وربط إخراج تخزين Azure Table.

المقتطف التالي هو ملف function.json لهذا السيناريو.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

يحدد تكوين JSON الخاص بنا تشغيل الدالة عند إضافة رسالة إلى قائمة انتظار تسمى myqueue-items. ثم تُكتَب القيمة المرجعة لوظيفتنا إلى الجدول outTable في تخزين Azure Table.

بالنسبة إلى وظائف PowerShell، تتم كتابة روابط الإخراج بشكل صريح باستخدام الأمر cmdlet Push-OutputBinding.

يُعد هذا المثال توضيحًا بسيطًا حول كيفية تكوين الارتباطات لوظيفة ما. يمكننا تغيير الإخراج ليكون بريدا إلكترونيا باستخدام ربط SendGrid، أو وضع حدث على ناقل خدمة Microsoft Azure لإعلام بعض المكونات الأخرى في بنيتنا. يمكن أن يكون لدينا روابط إخراج متعددة لدفع البيانات إلى خدمات مختلفة.

تلميح

لعرض محتويات function.json وتحريرها في مدخل Microsoft Azure، من الصفحة الرئيسية، حدد تطبيق الوظائف، وفي الجزء حدد JSON View. تعرض طريقة عرض Resource JSON معرف المورد وتعليمة JSON البرمجية القابلة للتحرير. لإغلاق عرض JSON، حدد X إلى زاوية الجزء اليمنى العليا.

لا تستخدم كافة اللغات التي تدعمها الدالات ملف function.json لتعريف الوظائف.

إنشاء وظيفة في مدخل Azure

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

هذه الوحدة النمطية غير مدعومة لجميع اللغات التي تدعمها Functions، ولا يدعم المدخل نفسه إنشاء وظائف بجميع اللغات التي تدعمها Functions.

بالنسبة للغات المدعومة التي تستخدم ملف function.json لتعريف الوظائف، يمكنك إنشاء هذه الدالات وتحريرها مباشرة في مدخل Microsoft Azure. تتضمن هذه اللغات المدعومة من المدخل: JavaScript وPowerShell وPython وC# Script (.csx). يجب تطوير اللغات التي تحدد الوظائف مباشرة في التعليمات البرمجية نفسها خارج المدخل ونشرها في Azure. تتضمن هذه اللغات غير المعتمدة غير التصديرية: C#، وJava، وPython (نموذج البرمجة v2)، وJavaScript/TypeScript (نموذج برمجة Node.js v4).

قوالب الوظائف

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

يوفر تحديد قالب من جزء Add function وصولا سهلا إلى بيئات التطوير والمشغلات والتبعيات الأكثر شيوعا. عند إنشاء وظيفة في مدخل Azure، يمكنك الاختيار من بين أكثر من 20 قالبًا. بمجرد الإنشاء، يمكنك تخصيص التعليمات البرمجية بشكل أكبر.

عند إنشاء وظيفة من قالب، يتم إنشاء العديد من الملفات، بما في ذلك ملف تكوين، function.json،وملف التعليمات البرمجية المصدر، index.js.

يمكنك إنشاء أو تحرير دوال لتطبيق الوظائف الخاص بك عن طريق تحديد الوظائف ضمن فئة الوظائف من قائمة Function App.

عند تحديد وظيفة قمت بإنشائها في تطبيق الوظائف، يتم فتح جزء Function. بتحديد Code + Test من قائمة Function، يتوفر لديك حق الوصول إلى الإجراءات في اختبار شريط الأوامر لاختبار التعليمات البرمجية وتشغيلها، أو لحفظ أو تجاهل التغييرات التي تجريها، أو للحصول على عنوان URL المنشور. بتحديد اختبار/تشغيل من شريط الأوامر، يمكنك تشغيل حالات استخدام الطلبات التي تتضمن الاستعلام عن السلاسل والقيم. يعرض مسار الوظيفة أعلى مربع التعليمات البرمجية اسم الملف المفتوح. يمكنك تحديد ملف معين من القائمة المنسدلة لاختبار أو تحرير، على سبيل المثال، function.json.

لقطة شاشة لرمز الوظيفة ومحرر الاختبار الذي يظهر طريقة العرض الموسعة للاختبار/التشغيل، مع خيارات القائمة مميزة.

في الصورة السابقة، يحتوي الجزء على علامات تبويب الإدخال والإخراج . تتيح لك تحديد علامة التبويب إدخال إنشاء الوظيفة واختبارها عن طريق إضافة معلمات الاستعلام وتوفير القيم لسلسلة الاستعلام. تُعَرض علامة التبويب Output نتائج الطلب.

اختبار Azure Function الخاصة بك

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

  • اختباره في المدخل
  • تشغيله يدوياً

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

يوفر المدخل أيضًا طريقة ملائمة لاختبار وظائفك. كما هو موضح سابقا في لقطة الشاشة، يمكنك تحديد Run في هذا الجزء. تظهر النتائج تلقائيا في علامة التبويب Output، ويفتح جزء سجلات لعرض الحالة.

تشغيل الوظيفة يدوياً

يمكنك بدء تشغيل وظيفة عن طريق تشغيل المشغل المكوّن يدويًا. على سبيل المثال، إذا كنت تستخدم مشغل HTTP، يمكنك استخدام أدوات اختبار HTTP هذه لبدء طلب HTTP إلى عنوان URL لنقطة نهاية الدالة:

تنبيه

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

يمكنك الحصول على نقطة نهاية عنوان URL لمشغل HTTP عن طريق تحديد Get function URL من صفحة تعريف الدالة في المدخل.

لوحة معلومات Monitoring وApplication Insights

تُعد القدرة على مراقبة وظائفك أمرًا بالغ الأهمية في أثناء التطوير والإنتاج. يوفر مدخل Azure لوحة معلومات للمراقبة، والتي تقوم بتشغيلها من خلال تمكين تكامل Application Insights. في قائمة تطبيق الوظائف، ضمن Settings، حدد Application Insights، وحدد Turn on Application Insights، ثم حدد Apply. في مربع الحوار، حدد Yes. توفر لوحة معلومات Application Insights هذه طريقة سريعة لعرض محفوظات عمليات تنفيذ الوظيفة، وتعرض الطابع الزمني والتعليمة البرمجية للنتيجة والمدة ومعرّف العملية التي تُملأ من قِبَل Application Insights.

لقطة شاشة تظهر نتائج تحليلات تطبيق وظيفة HTTP مع نتائج الوظيفة المقابلة لها، والتعليمات البرمجية لحالة HTTP، وعرض عناصر القائمة مميزة.

جزء سجلات الدفق

بعد تمكين Application Insights في مدخل Azure، يمكنك إضافة عبارات تسجيل إلى الوظيفة لتتبع الأخطاء. يتم تمرير أساليب استدعاء لكل لغة عنصر "تسجيل"، والتي يمكن استخدامها لإضافة معلومات السجل إلى جزء السجلات في جزء Code + Test عند تشغيل اختبار.

الكتابة إلى سجلات من التعليمات البرمجية log الخاصة بك باستخدام الأسلوب على context الكائن، والذي يتم تمريره إلى المعالج. يكتب المثال التالي إلى مستوى السجل الافتراضي (معلومات):

context.log('Enter your logging statement here');

اكتب إلى سجلات من التعليمات البرمجية Write-Host الخاصة بك باستخدام cmdlet، كما هو موضح في المثال التالي:

Write-Host "Enter your logging statement here"

الأخطاء والفشل والتحذيرات والحالات الخارجة عن المألوف

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