برنامج تعليمي: ابدأ باستخدام Azure WebJobs SDK لمعالجة الخلفية حسب الأحداث

ابدأ باستخدام Azure WebJobs SDK لـ Azure App Service لتمكين تطبيقات الويب من تشغيل مهام الخلفية والمهام المجدولة والاستجابة للأحداث.

استخدم Visual Studio 2022 لإنشاء تطبيق وحدة تحكم NET Core. الذي يستخدم WebJobs SDK للرد على رسائل قائمة انتظار Azure Storage وتشغيل المشروع محلياً وتوزيعه أخيراً في Azure.

في هذا البرنامج التعليمي، سوف تتعلم كيفية:

  • إنشاء تطبيق وحدة التحكم
  • إضافة وظيفة⁧⁩
  • اختبر بشكل محلي
  • نشر في Azure
  • تمكين تسجيل تطبيق Insights
  • إضافة روابط الإدخال/الإخراج

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

إنشاء تطبيق وحدة التحكم

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

إشعار

تم التحقق من الإجراءات الواردة في هذه المقالة لإنشاء تطبيق وحدة تحكم NET Core. يعمل على NET 6.0.

إنشاء مشروع

  1. حدد من Visual Studioملف>جديد>مشروع.

  2. ضمن إنشاء مشروع جديد، حدد تطبيق وحدة التحكم (C#)ثم حدد "Next".

  3. ضمن تكوين المشروع الجديد، قم بتسمية المشروع WebJobsSDKSample، ثم حدد "Next".

  4. اختر إطار العمل الهدف وحدد "Create". تم التحقق من هذا البرنامج التعليمي باستخدام .NET 6.0.

ثبت حزم WebJobs NuGet

ثبت أحدث حزمة من WebJobs NuGet. تتضمن هذه الحزمة Microsoft.Azure.WebJobs (WebJobs SDK)، والذي يتيح نشر التعليمات البرمجية الدالة إلى WebJobs في Azure App Service.

  1. احصل على أحدث إصدار 4.x ثابت من حزمة Microsoft.Azure.WebJobs.Extensions NuGet.

  2. في Visual Studio، اذهب إلى أدوات>NuGet مدير الحِزَم.

  3. حدد "Package Manager Console". سترى قائمة من NuGet cmdlets، ورابط إلى الوثائق، ونقطة دخولPM>.

  4. في الأمر التالي، استبدل <4_X_VERSION> برقم الإصدار الحالي الموجود في الخطوة 1.

    Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
    
  5. في Package Manager Console، نفذ الأمر. تظهر قائمة الملحقات وتُثبت تلقائياً.

أنشئ المُضيف

إن المُضيف عبارة عن حاوية وقت التشغيل للوظائف التي تستمع للمشغلات والمكالمات الدالات. تُنشئ الخطوات التالية مُضيف يقوم بتنفيذ IHost، وهو المضيف العام في ASP.NET الأساسية.

  1. حدد علامة التبويب Program.cs، وأزل المحتويات الحالية وأضف عبارات using التالية:

    using System.Threading.Tasks;
    using Microsoft.Extensions.Hosting;
    
  2. أيضاً ضمن Program.cs، أضف التعليمة البرمجية التالية:

    namespace WebJobsSDKSample
    {
        class Program
        {
            static async Task Main()
            {
                var builder = new HostBuilder();
                builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
                var host = builder.Build();
                using (host)
                {
                    await host.RunAsync();
                }
            }
        }
    }
    

في ASP.NET Core، يتم تعيين تكوينات المضيف عن طريق استدعاء الأساليب على المثيلHostBuilder. لمزيد من المعلومات، راجع .NET Generic Host. يُهيئ أسلوب الملحق ConfigureWebJobs مضيف WebJobs. في ConfigureWebJobs، هيئ ملحقات ربط معينة، مثل ملحق ربط التخزين، وعين خصائص تلك الملحقات.

فعل تسجيل وحدة التحكم

أعدِّ تسجيل وحدة التحكم الذي يستخدم إطار عمل تسجيل ASP.NET Core. يتضمن إطار العمل هذا Microsoft.Extensions.Logging API الذي يعمل مع مجموعة متنوعة من موفري تسجيل الدخول المضمنة والجهات الخارجية.

  1. احصل على أحدث إصدار مستقر من Microsoft.Extensions.Logging.Console حزمة NuGet، والتي تتضمن Microsoft.Extensions.Logging.

  2. في الأمر التالي، استبدل <6_X_VERSION> برقم الإصدار الحالي الموجود في الخطوة 1. لكل نوع من NuGet Package رقم إصدار فريد.

    Install-Package Microsoft.Extensions.Logging.Console -version <6_X_VERSION>
    
  3. في وحدة التحكم مدير الحِزَم، عبئ رقم الإصدار الحالي ونفذ الأمر. تظهر قائمة الملحقات وتُثبت تلقائياً.

  4. ضمن علامة التبويب برنامج.cs، أضف عبارة using هذه:

    using Microsoft.Extensions.Logging;
    
  5. تابع ضمن برنامج.cs، أضف أسلوب ConfigureLogging قبل أمر HostBuilderBuild. يضيف أسلوبAddConsole تسجيل وحدة التحكم إلى التكوين.

    builder.ConfigureLogging((context, b) =>
    {
        b.AddConsole();
    });
    

    يبدو الأسلوب Mainالآن مثل ذلك:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
        builder.ConfigureLogging((context, b) =>
                {
                    b.AddConsole();
                });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

    تُجري هذه الإضافة تلك التغييرات:

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

الآن، يمكن إضافة دالة تعمل بواسطة الرسائل التي تصل في قائمة انتظار Azure Storage.

إضافة وظيفة⁧⁩

الدالة هي وحدة التعليمات البرمجية التي تعمل على جدول، أو تعمل استناداً إلى الأحداث، أو تعمل عند الطلب. يستمع المشغل إلى حدث خدمة. في سياق Sdk WebJobs، لا يشير المشغل إلى وضع النشر. يجب دائما نشر WebJobs المستند إلى الحدث أو المجدول المُنشأ باستخدام SDK بوصفه WebJobs مستمر مع تمكين "Always on".

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

تثبيت ملحق ربط التخزين

بدءاً من الإصدار 3 من WebJobs SDK، للاتصال بخدمات Azure Storage، يجب تثبيت حزمة ملحق ربط تخزين منفصلة.

إشعار

بدءاً من 5.x، فإن Microsoft.Azure.WebJobs.Extensions.Storage قد تم تقسيم حسب خدمة التخزين وتم ترحيل أسلوب التوسيع AddAzureStorage() حسب نوع الخدمة.

  1. احصل على أحدث إصدار ثابت من حزمة NuGet، المسماة Microsoft.Azure.WebJobs.Extensions.Storage، الإصدار 5.x.

  2. في الأمر التالي، استبدل <5_X_VERSION> برقم الإصدار الحالي الموجود في الخطوة 1. لكل نوع من NuGet Package رقم إصدار فريد.

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
    
  3. في Package Manager Console، نفذ الأمر برقم الإصدار الحالي عند نقطة الإدخال PM>.

  4. تابع فيبرنامج.cs، في أسلوب الملحق ConfigureWebJobs، وأضف الأسلوب AddAzureStorageQueues على المثيل HostBuilder (قبل الأمر Build) لتهيئة ملحق التخزين. عند هذه النقطة، يبدو الأسلوب ConfigureWebJobs كما يلي:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    
  5. إضافة التعليمات البرمجية التالية في الأسلوب Main بعد إنشاء المثيل builder:

    builder.UseEnvironment(EnvironmentName.Development);
    

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

    يجب أن يبدو أسلوب Main الآن كالمثال التالي:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.UseEnvironment(EnvironmentName.Development);
        builder.ConfigureLogging((context, b) =>
        {
            b.AddConsole();
        });
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorageQueues();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

إنشاء وظيفة قائمة انتظار مشغلة

تخبر السمة QueueTrigger وقت التشغيل باستدعاء هذه الوظيفة عند كتابة رسالة جديدة في قائمة انتظار Azure Storage تسمى queue. يتم توفير محتويات رسالة قائمة الانتظار إلى كود الطريقة في المعامل message. نص الطريقة هو المكان الذي تقوم فيه بمعالجة بيانات المشغل. يقوم الرمز فقط بتسجيل الرسالة في هذا المثال.

  1. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع، وحدد"Add" > عنصر جديد، ثم حدد"Class".

  2. سمي ملف فئة C # الجديد Functions.cs وحدد"Add".

  3. فيFunctions.cs، استبدل القالب المُنشأ بالكود التالي:

    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    
    namespace WebJobsSDKSample
    {
        public class Functions
        {
            public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
            {
                logger.LogInformation(message);
            }
        }
    }
    

    يجب وضع علامة على فئةالوظائف كـ public static حتى يتمكن وقت التشغيل من الوصول إلى الطريقة وتنفيذها. في نموذج التعليمات البرمجية أعلاه، عند إضافة رسالة إلى قائمة انتظار باسم queue، تُنفذ الوظيفة وتُكتب السلسلة message في السجلات. قائمة الانتظار المُراقبة موجودة في حساب Azure Storage الافتراضي، والذي يُنشأ بعد ذلك.

لا يجب أن تكون المعلمة message سلسلة. يمكن أيضاً الارتباط بكائن JSON أو مصفوفة بايت أو كائنCloudQueueMessage. راجع استخدام مشغل قائمة الانتظار. يحتوي كل نوع ربط (مثل قوائم الانتظار أو النقاط الكبيرة أو الجداول) على مجموعة مختلفة من أنواع المعلمات التي يمكن الارتباط بها.

أنشئ حساب خدمة في Azure

لا يحتوي Azure Storage Emulator الذي يعمل محلياً على جميع الميزات التي يحتاجها WebJobs SDK. سينشأ حساب تخزين في Azure وتكون المشروع لاستخدامه.

لمعرفة كيفية إنشاء حساب تخزين للأغراض العامة الإصدار 2، راجعإنشاء حسابAzure Storage.

تحديد موقع سلسلة الاتصال ونسخها

مطلوب سلسلة اتصال لتكوين التخزين. احتفظ بسلسلة الاتصال هذه للخطوات التالية.

  1. فيمدخل Azure، انتقل إلى حساب التخزين وحدد"Settings".

  2. من"Settings"، حددAccess keys.

  3. بالنسبة إلىسلسلة الاتصالضمنkey1 ، حدد الرمز نسخ إلى الحافظة.

    key

تكوين التخزين لتشغيل محليا

تبحث WebJobs SDK عن سلسلة اتصال التخزين في إعدادات التطبيق في Azure. عند التشغيل محلياً، فإنه يبحث عن هذه القيمة في ملف التكوين المحلي أو في متغيرات البيئة.

  1. انقر بزر الماوس الأيمن فوق المشروع، وحدد"Select" > عنصر جديد، وحددملف تكوين JavaScript JSON، وسمي الملف الجديد appsettings.json وحدد"Select".

  2. في الملف الجديد، أضف خانة AzureWebJobsStorage، كما في المثال التالي:

    {
        "AzureWebJobsStorage": "{storage connection string}"
    }
    
  3. استبدل{سلسلة اتصال التخزين} بسلسلة الاتصال المنسوخة مسبقاً.

  4. حدد ملف appsettings.json في مستكشف الحلول وفي نافذةالخصائص، اضبط الإجراءCopy to Output Directory على Copy if newest.

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

اختبر بشكل محلي

إنشاء وتشغيل المشروع محلياً وإنشاء قائمة انتظار رسالة لتشغيل الدالة.

  1. في مدخل Microsoft Azure، انتقل إلى حساب التخزين وحدد علامة التبويب Queues (1). حدد + Queue (2) وأدخل queue كاسم قائمة الانتظار (3). ثم حدد OK (4).

    This image shows how to create a new Azure Storage Queue.

  2. انقر فوق قائمة الانتظار الجديدة وحدد Add message.

  3. في مربع الحوار Add Message، أدخل مرحباً بالعالم! باعتباره نص الرسالة، ثم حدد OK. توجد الآن رسالة في قائمة الانتظار.

    Create queue

  4. اضغطCtrl + F5لتشغيل المشروع.

    تُظهر وحدة التحكم أن وقت التشغيل وجد الدالة. ولأنه استخدِمت السمة QueueTrigger في الدالة ProcessQueueMessage فيستمع وقت تشغيل WebJobs للرسائل الموجودة في قائمة الانتظار المسماة queue. عندما يعثر على رسالة جديدة في قائمة الانتظار هذه، يستدعي وقت التشغيل الوظيفة، ويمرر قيمة سلسلة الرسالة.

  5. عد إلى إطارقائمة الانتظاروحدثه. اختفت الرسالة، حيث تمت معالجتها بواسطة الوظيفة التي تعمل محلياً.

  6. أغلق نافذة وحدة التحكم.

حان الوقت الآن لنشر مشروع WebJobs SDK إلى Azure.

نشر في Azure

أثناء النشر، تقوم بإنشاء مثيل خدمة التطبيق حيث ستقوم بتشغيل الوظائف. عندما تنشر تطبيق وحدة تحكم NET. في خدمة التطبيقات في Azure، يتم تشغيله تلقائياً باعتباره WebJob. لمعرفة المزيد حول النشر، راجعتطوير ونشر WebJobs باستخدام Visual Studio.

إنشاء موارد Azure

  1. فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وحددنشر.

  2. في مربع الحوار Publish ، حدد Azure for Target، ثم حدد Next.

  3. حدد Azure WebJobs لهدف محدد، ثم حدد التالي.

  4. أعلى مثيلات App Service حدد زر الجمع (+) لإنشاء Azure WebJob جديد.

  5. في مربع الحوار App Service (Windows)، استخدم إعدادات الاستضافة في الجدول التالي.

    الإعدادات القيمة المقترحة ‏‏الوصف‬
    الاسم اسم فريد عالميًا الاسم الذي يعرّف بشكل فريد تطبيق الدالة الجديد الخاص بك.
    الاشتراك اختر اشتراكك اشتراك معرف Azure المطلوب استخدامه.
    مجموعة الموارد myResourceGroup اسم مجموعة الموارد التي يتم من خلالها إنشاء تطبيق دالة. اختر جديد لإنشاء مجموعة موارد جديدة.
    نوع خطة الاستضافة خطة App Service تحددخطة خدمة تطبيقاتموقع مزرعة خوادم الويب التي تستضيف تطبيقك، وحجمها، ومزاياها. يمكنك توفير المال عند استضافة عدة تطبيقات بتكوين تطبيقات الويب لمشاركة خطة خدمة تطبيقات واحدة. تحدد خطط خدمة التطبيقات المنطقة وحجم المثيل وعدد المقاييس وSKU (مجاني أو مشترك أو أساسي أو قياسي أو متميز). اختر جديد لإنشاء خطة App Service جديدة. لا يدعم المستويان Free وBasic خيار Always On للحفاظ على تشغيل موقعك بشكل مستمر.

    Create App Service dialog box

  6. حدد Create لإنشاء WebJob والموارد ذات الصلة في Azure باستخدام هذه الإعدادات ونشر التعليمات البرمجية لمشروعك.

  7. حدد إنهاء للعودة إلى صفحة النشر .

تمكين دائماً

للحصول على WebJob مستمر، يجب تمكين الإعداد دائماً في الموقع بحيث يعمل WebJobs بشكل صحيح. إذا لم تمكنه دائماً، فسيصبح وقت التشغيل خاملاً بعد بضع دقائق من عدم النشاط.

  1. في صفحةالنشر، حدد النقاط الثلاث أعلاه الاستضافة لإظهارإجراءات قسم ملف تعريف الاستضافةواخترفتح في بوابة Azure.

  2. ضمنإعدادات، اخترتهيئة > إعدادات عامة، واضبطتشغيل دائماًعلى تشغيل، ثم حدد"Save" و"Continue"لإعادة تشغيل الموقع.

نشر المشروع

مع تطبيق الويب المُنشأ في Azure، حان الوقت لنشر مشروع WebJobs.

  1. في صفحةالنشرضمنالاستضافة، حدد زر "edit" وغيّرWebJob Typeإلى Continuous وحدد"Save". يعمل هذا على التأكد من تشغيل WebJob عند إضافة الرسائل إلى قائمة الانتظار. عادةً ما يتم استخدام WebJobs التي تعمل فقط لخطافات الويب اليدوية.

    Change WebJob type from the VS 2022 Publish window.

  2. حدد الزر"Publish"في الزاوية العلوية اليمنى من صفحةنشر. عند اكتمال العملية، يعمل WebJob على Azure.

أنشئ إعداد تطبيق اتصال التخزين

تحتاج إلى إنشاء نفس إعداد سلسلة اتصال التخزين في Azure المستخدم محلياً في ملف التكوين appsettings.json. يتيح ذلك تخزين سلسلة الاتصال وملفات

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

  2. فيإعدادات التطبيق، اختر+ إضافة إعداد.

  3. فياسم إعداد التطبيق الجديد، اكتب AzureWebJobsStorage وحدد"Ok".

  4. فيRemote، الصق سلسلة الاتصال من الإعداد المحلي وحدد"Ok".

تم الآن تعيين سلسلة الاتصال في التطبيق في Azure.

قم بتشغيل الوظيفة في Azure

  1. تأكد من عدم العمل محلياً. أغلق نافذة وحدة التحكم إذا كانت لا تزال مفتوحة. خلاف ذلك، قد يكون المثيل المحلي هو أول من يعالج أي رسائل قائمة انتظار تنشأ.

  2. في صفحةقائمة الانتظارفي Visual Studio، أضف رسالة إلى قائمة الانتظار كما كان من قبل.

  3. حدث صفحةقائمة الانتظار، وستختفي الرسالة الجديدة لأنها عولجت بواسطة الوظيفة التي تعمل في Azure.

تمكين تسجيل تطبيق Insights

عند تشغيل WebJob في Azure، لا يمكن مراقبة تنفيذ الوظائف من خلال عرض إخراج وحدة التحكم. لتتمكن من مراقبة WebJob، يجب إنشاء مثيلApplication Insights مرتبط عند نشر المشروع.

أنشئ مثيل Application Insights

  1. في صفحة ملف التعريفنشر، حدد النقاط الثلاث أعلاه الاستضافةلعرضإجراءات قسم ملف تعريف الاستضافةواختر فتح في Azure Portal.

  2. في تطبيق الويب ضمنالإعدادات، اختر Application Insights، وحدد تشغيل Application Insights.

  3. تحقق مناسم الموردالمُنشأ للمثيل و الموقع، وحددتطبيق.

  4. ضمنالإعدادات، اخترتهيئةوتحقق من إنشاء APPINSIGHTS_INSTRUMENTATIONKEY جديد. يُستخدم هذا المفتاح لتوصيل مثيل WebJob الخاص بـ Application Insights.

للاستفادة من تسجيلApplication Insights، يلزم تحديث رمز التسجيل أيضاً.

ثبت ملحق Application Insights

  1. احصل على أحدث إصدار ثابت من Microsoft.Azure.WebJobs.Logging.ApplicationInsightsحزمة NuGet، الإصدار 3.x.

  2. في الأمر التالي، استبدل <3_X_VERSION> برقم الإصدار الحالي الموجود في الخطوة 1. لكل نوع من NuGet Package رقم إصدار فريد.

    Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
    
  3. في Package Manager Console، نفذ الأمر برقم الإصدار الحالي عند نقطة الإدخال PM>.

هيئ موفر تسجيل Application Insights

افتح البرنامج.cs وأضف التهيئة التالية في ConfigureLogging بعد المكالمة إلى AddConsole :

// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}

يجب أن يبدو كود الطريقة Main الآن مشابهاً للمثال التالي:

static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment(EnvironmentName.Development);
    builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorage();
            });
    builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();

                // If the key exists in settings, use it to enable Application Insights.
                string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrEmpty(instrumentationKey))
                {
                    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
                }
            });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

يؤدي هذا إلى تهيئة موفر تسجيل Application Insights باستخدامالتصفيةالافتراضية. عند التشغيل محلياً، تُكتب جميع المعلومات والسجلات ذات المستوى الأعلى لكل من وحدة التحكم وApplication Insights.

أعد نشر المشروع وشغل الوظيفة مرة أخرى

  1. فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وحددنشر.

  2. كما في السابق، استخدم مدخل Microsoft Azure لإنشاء رسالة قائمة انتظار كما فعلت سابقاً، باستثناء إدخال Hello App Insights! كنص الرسالة.

  3. في صفحة ملف التعريفنشر، حدد النقاط الثلاث أعلاه الاستضافةلعرضإجراءات قسم ملف تعريف الاستضافةواختر فتح في Azure Portal.

  4. في تطبيق الويب ضمنالإعدادات، اختر Application Insights، وحددعرض بيانات Application Insights.

  5. حددبحثثم حددعرض جميع البيانات في آخر 24 ساعة.

    Select Search

  6. إذا كنت لا ترى الرسالة Hello App Insights!، فحدد Refresh بشكل دوري لعدة دقائق. لا تظهر السجلات على الفور، لأن الأمر يستغرق بعض الوقت حتى يقوم عميل Application Insights بمسح السجلات التي يعالجها.

    Logs in Application Insights

إضافة روابط الإدخال/الإخراج

تعمل الروابط على تبسيط التعليمات البرمجية التي تقرأ البيانات وتكتبها. تعمل روابط الإدخال على تبسيط التعليمات البرمجية التي تقرأ البيانات. تعمل روابط الإخراج على تبسيط التعليمات البرمجية التي تكتب البيانات.

إضافة روابط

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

  1. في Functions.cs، أضف using:

    using System.IO;
    
  2. استبدل طريقة ProcessQueueMessage بالتعليمات البرمجية التالية:

    public static void ProcessQueueMessage(
        [QueueTrigger("queue")] string message,
        [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob,
        [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob,
        ILogger logger)
    {
        logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes");
        myBlob.CopyTo(outputBlob);
    }
    

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

    يستخدم هذه التعليمة البرمجية روابط الإخراج لإنشاء نسخة من الملف المحدد بواسطة رسالة قائمة الانتظار. نسخة الملف مسبوقة بـ copy-.

  3. في Program.cs، في أسلوب الملحق ConfigureWebJobs، أضف الطريقة AddAzureStorageBlobs على مثيل HostBuilder (قبل الأمر Build ) لتهيئة ملحق التخزين. عند هذه النقطة، يبدو الأسلوب ConfigureWebJobs كما يلي:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
        b.AddAzureStorageBlobs();
    });
    
  4. أنشئ حاوية "كائن ثنائي كبير" في حساب التخزين.

    أ. في مدخل Microsoft Azure، انتقل إلى علامة التبويب Containers أسفل Data storage وحدد + Container

    ب. في مربع الحوار New container، أدخل container كاسم للحاوية، ثم حدد Create.

  5. حمل ملفProgram.cs إلى حاوية الكائنات الثنائية الكبيرة. (يُستخدم هذا الملف هنا كمثال؛ يمكن تحميل أي ملف نصي وإنشاء رسالة قائمة انتظار باسم الملف.)

    أ. حدد الحاوية الجديدة التي قمت بإنشائها

    ب. حدد الزر تحميل.

    Blob upload button

    جـ. ابحث عنProgram.csوحدده، ثم حدد "Ok".

أعد نشر المشروع

  1. فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وحددنشر.

  2. في مربع الحوارنشر، تأكد من تحديد الملف الشخصي الحالي ثم حددنشر. تم تفصيل نتائج النشر في نافذةالإخراج.

  3. أنشئ رسالة قائمة انتظار في قائمة الانتظار التي قمت بإنشائها سابقاً، معالبرنامج.csكنص الرسالة.

    Queue message Program.cs

  4. ستظهر نسخة من الملف، copy-Program.cs، في حاوية البيانات الثنائية الكبيرة.

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

يوضح هذا البرنامج التعليمي كيفية إنشاء مشروع WebJobs SDK 3.x وتشغيله ونشره.