مشاركة عبر


التشغيل السريع: الاستجابة لتغييرات قاعدة بيانات Azure SQL باستخدام Azure Functions

في هذا التشغيل السريع، يمكنك استخدام Visual Studio Code لإنشاء تطبيق يستجيب للتغييرات في جدول قاعدة بيانات Azure SQL. بعد اختبار التعليمات البرمجية محليا، يمكنك نشرها إلى تطبيق وظائف جديد بلا خادم يعمل في خطة Flex Consumption في Azure Functions.

يستخدم مصدر المشروع ملحق Azure Developer CLI (azd) مع Visual Studio Code لتبسيط تهيئة التعليمات البرمجية للمشروع والتحقق منها محليا، ونشر التعليمات البرمجية الخاصة بك على Azure. يتبع هذا النشر أفضل الممارسات الحالية لتوزيع وظائف Azure الآمنة والقابلة للتطوير.

Important

بينما يدعم جميع اللغات الاستجابة للتغييرات في قاعدة بيانات Azure SQL من قبل كل اللغات، فإن سيناريو البدء السريع هذا يحتوي حاليا فقط على أمثلة ل C# وPython وTypeScript. لإكمال هذه البداية السريعة، اختر إحدى هذه اللغات المدعومة في أعلى المقال.

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

  • Node.js 18.x أو أعلى. يمكنك استخدام أمر node --version للتحقق من الإصدار الخاص بك.

تهيئة المشروع

يمكنك استخدام الأمر azd init من لوحة الأوامر لإنشاء مشروع تعليمات برمجية Azure Functions محلي من قالب.

  1. في Visual Studio Code، افتح مجلدا أو مساحة عمل تريد إنشاء مشروعك فيها.

  2. اضغط على F1 لفتح لوحة الأوامر، وابحث عن الأمر Azure Developer CLI (azd): Initialize App (init)وقم بتشغيله، ثم اختر تحديد قالب.

  3. عند المطالبة، ابحث عن نطاق .Azure Functions with SQL Triggers and Bindings

  4. عند المطالبة، أدخل اسم بيئة فريدا، مثل sqldbchanges.

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

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

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

قبل أن تتمكن من تشغيل تطبيقك محليا، يجب عليك إنشاء الموارد في Azure.

إنشاء موارد Azure

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

  1. في Visual Studio Code، اضغط على F1 لفتح لوحة الأوامر، وابحث عن الأمر Azure Developer CLI (azd): Sign In with Azure Developer CLIوقم بتشغيله، ثم قم بتسجيل الدخول باستخدام حساب Azure الخاص بك.

  2. اضغط على F1 لفتح لوحة الأوامر، وابحث عن الأمر Azure Developer CLI (azd): Provision Azure resources (provision) وقم بتشغيله لإنشاء موارد Azure المطلوبة.

  3. عند مطالبتك في نافذة المحطة الطرفية، قم بتوفير معلمات النشر المطلوبة التالية:

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

azd provision يستخدم الأمر استجابتك لهذه المطالبات باستخدام ملفات تكوين Bicep لإنشاء موارد Azure المطلوبة وتكوينها، باتباع أحدث الممارسات:

  • خطة استهلاك Flex وتطبيق الوظائف
  • قاعدة بيانات Azure SQL (الاسم الافتراضي: ToDo)
  • Azure Storage (مطلوب) وApplication Insights (مستحسن)
  • نهج الوصول والأدوار لحسابك
  • اتصالات الخدمة إلى الخدمة باستخدام الهويات المدارة (بدلا من سلسلة الاتصال المخزنة)

تقوم خطافات ما بعد التوفير أيضا بإنشاء ملف local.settings.json ، وهو مطلوب للتشغيل محليا. يحتوي هذا الملف على الإعدادات المطلوبة للاتصال بقاعدة البيانات في Azure.

راجع الكود (اختياري)

يحدد العينة وظيفتين:

اسم الدالة ملف التعليمات البرمجية نوع المشغل الوصف
httptrigger-sql-output sql_output_http_trigger.cs مشغل HTTP يقبل حمولة JSON منسقة بشكل صحيح ويستخدم ربط إخراج SQL لإدراج الكائن كصف في الجدول ToDo .
ToDoTrigger sql_trigger.cs مشغل SQL الاستماع إلى الجدول للتغييرات ToDo على مستوى الصف وإرجاع كائن يمثل الصف الذي تم تغييره.

يتم تعريف النوع ToDoItem في ToDoItem.cs.

اسم الدالة ملف التعليمات البرمجية نوع المشغل الوصف
http_trigger_sql_output function_app.py مشغل HTTP يقبل حمولة JSON منسقة بشكل صحيح ويستخدم ربط إخراج SQL لإدراج الكائن كصف في الجدول ToDo .
httptrigger-sql-output sql_trigger_todo مشغل SQL الاستماع إلى الجدول للتغييرات ToDo على مستوى الصف وإرجاع كائن يمثل الصف الذي تم تغييره.

يتم تعريف النوع ToDoItem في todo_item.py.

اسم الدالة ملف التعليمات البرمجية نوع المشغل الوصف
httpTriggerSqlOutput sql_output_http_trigger.ts مشغل HTTP يقبل حمولة JSON منسقة بشكل صحيح ويستخدم ربط إخراج SQL لإدراج الكائن كصف في الجدول ToDo .
sqlTriggerToDo sql_trigger.ts مشغل SQL الاستماع إلى الجدول للتغييرات ToDo على مستوى الصف وإرجاع كائن يمثل الصف الذي تم تغييره.

يتم تعريف النوع ToDoItem في ToDoItem.ts.

تستخدم كلتا الدالتين متغيرات البيئة على مستوى AZURE_SQL_CONNECTION_STRING_KEY_* التطبيق التي تحدد اتصالا مستندا إلى الهوية بمثيل قاعدة بيانات Azure SQL باستخدام مصادقة معرف Microsoft Entra. يتم إنشاء متغيرات البيئة هذه لك في كل من Azure (إعدادات تطبيق الوظائف) ومحليا (local.settings.json) أثناء العملية azd provision .

الاتصال بقاعدة بيانات SQL

يمكنك استخدام ملحق SQL Server (mssql) ل Visual Studio Code للاتصال بقاعدة البيانات الجديدة. يساعدك هذا الملحق ToDo على إجراء تحديثات في الجدول لتشغيل وظيفة مشغل SQL.

  1. اضغط على F1 وفي لوحة الأوامر ، ابحث عن الأمر MS SQL: Add Connectionوقم بتشغيله.

  2. في مربع الحوار اتصال، قم بتغيير نوع الإدخال إلى استعراض Azure ، ثم قم بتعيين هذه الخيارات المتبقية:

    خيار اختار الوصف
    الخادم مثيل SQL Server الخاص بك بشكل افتراضي، يتم عرض جميع الخوادم التي يمكن الوصول إليها من خلال حساب Azure الخاص بك. استخدم الاشتراكومجموعة المواردوالموقع للمساعدة في تصفية قائمة الخوادم.
    قاعدة بيانات ToDo قاعدة البيانات التي تم إنشاؤها أثناء عملية التوفير.
    نوع المصادقة معرِّف Microsoft Entra إذا لم تكن قد قمت بتسجيل الدخول بالفعل، فحدد تسجيل الدخول وسجل الدخول إلى حساب Azure الخاص بك.
    معرف المستأجر مستأجر الحساب المحدد. إذا كان حسابك يحتوي على أكثر من مستأجر واحد، فاختر المستأجر الصحيح لاشتراكك.
  3. حدد اتصال للاتصال بقاعدة البيانات الخاصة بك. يستخدم الاتصال حساب المستخدم المحلي الخاص بك، والذي يتم منحه أذونات المسؤول في خادم الاستضافة ويتم تعيينه dbo في قاعدة البيانات.

  4. في طريقة عرض SQL Server ، حدد موقع الاتصالات وقم بتوسيعها ثم الخادم الجديد في مستكشف SQL Server. قم بتوسيع الجداول وتحقق من ToDo وجود الجدول. إذا لم يكن موجودا ، فقد تحتاج إلى التشغيل azd provision مرة أخرى والتحقق من وجود أخطاء.

تشغيل الدالة محليًا

يتكامل Visual Studio Code مع أدوات Azure Functions Core للسماح لك بتشغيل هذا المشروع على كمبيوتر التطوير المحلي قبل النشر إلى تطبيق الوظائف الجديد في Azure.

  1. اضغط على F1 وفي لوحة الأوامر ، ابحث عن الأمر Azurite: Startوقم بتشغيله.

  2. لبدء تشغيل الوظيفة محليا، اضغط على F5 أو أيقونة Run and Debug في شريط النشاط على الجانب الأيمن.

    تعرض لوحة Terminal الإخراج من Core Tools. يبدأ تطبيقك في لوحة الوحدة الطرفية ، ويمكنك رؤية اسم الوظيفة التي تعمل محليا.

أثناء تشغيل التطبيق ، يمكنك التحقق من مشغلي الدالة وتصحيحهما.

للتحقق من وظيفة مشغل HTTP التي تكتب إلى ربط إخراج SQL:

  1. انسخ كائن JSON هذا، والذي يمكنك العثور عليه أيضا في test.http ملف المشروع:

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    تمثل هذه البيانات صفا تقوم بإدراجه في قاعدة بيانات SQL عند استدعاء نقطة نهاية HTTP. يقوم ربط الإخراج بترجمة كائن البيانات إلى INSERT عملية في قاعدة البيانات.

  2. أثناء تشغيل التطبيق، في طريقة عرض Azure ضمن مساحة العمل، قم بتوسيعوظائف> المحلية.

  3. حدد وظيفة HTTP بزر الماوس الأيمن (أو Ctrl + انقر فوق macOS) ، وحدد تنفيذ الوظيفة الآن ، والصق بيانات JSON المنسوخة ، واضغط على Enter.

    تعالج الدالة طلب HTTP وتكتب العنصر إلى قاعدة بيانات SQL المتصلة وتعيد الكائن الذي تم إنشاؤه.

  4. مرة أخرى في مستكشف SQL Server ، حدد ToDo الجدول بزر الماوس الأيمن (أو Ctrl + انقر فوق macOS) ، واختر تحديد أفضل 1000. عند تنفيذ الاستعلام، فإنه يرجع الصف المدرج أو المحدث.

  5. كرر الخطوة 3 وأعد إرسال نفس كائن البيانات بنفس المعرف. هذه المرة، يقوم UPDATE ربط الإخراج بتنفيذ عملية بدلا من الصف INSERT الموجود في قاعدة البيانات وتعديل الصف الموجود في قاعدة البيانات.

عند الانتهاء، اكتب Ctrl+C في المحطة الطرفية لإيقاف عملية الأدوات الأساسية.

نشر في Azure

يمكنك تشغيل azd deploy الأمر من Visual Studio Code لنشر التعليمات البرمجية للمشروع إلى الموارد المتوفرة بالفعل في Azure.

  1. اضغط على F1 لفتح لوحة الأوامر ، وابحث عن الأمر Azure Developer CLI (azd): Deploy to Azure (deploy)وقم بتشغيله.

    azd deploy يقوم الأمر بحزم التعليمات البرمجية الخاصة بك ونشرها في حاوية النشر. ثم يتم بدء تشغيل التطبيق وتشغيله في الحزمة المنشورة.

  2. بعد اكتمال الأمر بنجاح، يتم تشغيل تطبيقك في Azure. قم بتدوين Endpoint القيمة، وهي عنوان URL لتطبيق الوظائف الذي يعمل في Azure.

استدعاء الدالة في Azure

  1. في Visual Studio Code، اضغط على F1 وفي لوحة الأوامر ابحث عن الأمر Azure: Open in portalوقم بتشغيله ، وحدد Function app، واختر تطبيقك الجديد. سجل الدخول باستخدام حساب Azure الخاص بك، إذا لزم الأمر.

  2. حدد دفق السجل في الجزء الأيمن، الذي يتصل بسجلات Application Insights لتطبيقك.

  3. ارجع إلى Visual Studio Code لتشغيل كلتا الدالتين في Azure.

  1. اضغط على F1 لفتح لوحة الأوامر ، وابحث عن الأمر Azure Functions: Execute Function Now...وقم بتشغيله.

  2. ابحث عن تطبيق الوظائف البعيدة وحدده من القائمة، ثم حدد وظيفة مشغل HTTP.

  3. كما كان من قبل ، الصق بيانات كائن JSON في Enter bodyload واضغط على Enter.

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    لتنفيذ قيمة INSERT GUID بدلا من UPDATE، استبدل قيمة id GUID جديدة.

  4. ارجع إلى المدخل واعرض إخراج التنفيذ في نافذة السجل.

تنظيف الموارد

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

azd down --no-prompt

Note

يرشد --no-promptazd الخيار إلى حذف مجموعة الموارد الخاصة بك دون تأكيد منك.

لا يؤثر هذا الأمر على مشروع التعليمات البرمجية المحلية.