تطوير وتوزيع WebJobs باستخدام Visual Studio

تشرح هذه المقالة كيفية استخدام Visual Studio لتوزيع مشروع تطبيق وحدة التحكم إلى تطبيق ويب في Azure App Service باعتباره Azure WebJob. للحصول على معلومات حول كيفية توزيع WebJobs باستخدام مدخل Microsoft Azure، راجع تشغيل مهام الخلفية باستخدام WebJobs في Azure App Service.

يمكنك اختيار تطوير WebJob الذي يتم تشغيله إما كـ تطبيق .NET Core أو تطبيق .NET Framework. يتيح لك الإصدار 3.x من Azure WebJobs SDK تطوير WebJobs التي تعمل إما كتطبيقات .NET Core أو تطبيقات .NET Framework، بينما يدعم الإصدار 2.x .NET Framework فقط. تختلف طريقة توزيع مشروع WebJobs لمشاريع .NET Core عن تلك الخاصة بمشاريع .NET Framework.

يمكنك نشر عدة WebJobs على تطبيق ويب واحد، بشرط أن يكون لكل WebJob في تطبيق ويب اسم فريد.

WebJobs كتطبيقات .NET Core console

باستخدام الإصدار 3.x من Azure WebJobs SDK، يمكنك إنشاء WebJobs ونشره كتطبيقات وحدة تحكم .NET Core. للحصول على إرشادات خطوة بخطوة حول إنشاء ونشر تطبيق .NET Core console إلى Azure باعتباره WebJob، راجع بدء استخدام Azure WebJobs SDK لمعالجة الخلفية المستندة إلى الأحداث.

إشعار

لا يمكن ربط .NET Core Web Apps و/أو .NET Core WebJobs بمشاريع الويب. إذا كنت تريد توزيع WebJob الخاص بك مع تطبيق ويب، فأنشئ WebJobs الخاص بك باعتباره تطبيق .NET Framework console.

التوزيع إلى Azure App Service

يستخدم نشر .NET Core WebJob إلى Azure App Service من Visual Studio نفس الأدوات مثل نشر تطبيق ASP.NET Core.

  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. حدد إنهاء للعودة إلى صفحة النشر .

WebJobs كتطبيقات وحدة تحكم .NET Framework

إذا كنت تستخدم Visual Studio لتوزيع مشروع تطبيق .NET Framework console الممكّن لـ WebJobs، فإنه ينسخ ملفات وقت التشغيل إلى المجلد المناسب في تطبيق الويب (App_Data / jobs / Continuous للحصول على WebJobs المستمر وApp_Data/jobs/المشغلة لبرامج WebJobs المجدولة أو عند الطلب).

يضيف Visual Studio العناصر التالية إلى مشروع يدعم WebJobs:

Diagram showing what's added to a console app to enable deployment as a WebJob

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

قم بتوزيع مشروعاً كجهاز WebJob بمفرده، أو اربطه بمشروع ويب بحيث يتم توزيعه تلقائياً عند توزيع مشروع الويب. لربط المشاريع، يقوم Visual Studio بتضمين اسم المشروع الذي يدعم WebJobs في ملف webjobs-list.json في مشروع الويب.

Diagram showing WebJob project linking to web project

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

قم بتثبيت Visual Studio 2022 مع أحمال عمل تطوير Azure.

تفعيل توزيع WebJobs لمشروع تطبيق وحدة تحكم موجود

لديك خياران:

  • تمكين التوزيع التلقائي مع مشروع ويب.

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

  • تمكين التوزيع بدون مشروع ويب.

    قم بتكوين مشروع تطبيق وحدة تحكم موجود للتوزيع كجهاز WebJob بنفسه، بدون ارتباط بمشروع ويب. استخدم هذا الخيار عندما تريد تشغيل WebJob في تطبيق ويب بمفرده، بدون تشغيل تطبيق ويب في تطبيق الويب. قد ترغب في القيام بذلك لتوسيع نطاق موارد WebJob الخاصة بك بشكل مستقل عن موارد تطبيقات الويب الخاصة بك.

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

    Existing Project as Azure WebJob

    يظهر مربع الحوار Add Azure WebJob.

  2. في القائمة المنسدلة Project name، حدد مشروع تطبيق وحدة التحكم لإضافته كـ WebJob.

    Selecting project in Add Azure WebJob dialog box

  3. أكمل مربع الحوار Add Azure WebJob، ثم حدد OK.

  1. انقر بزر الماوس الأيمن فوق مشروع تطبيق وحدة التحكم في مستكشف الحلول، ثم حدد Publish as Azure WebJob.

    Publish as Azure WebJob

    يظهر مربع الحوار Add Azure WebJob، مع تحديد المشروع في المربع Project name.

  2. أكمل مربع الحوار Add Azure WebJob، ثم حدد OK.

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

قم بإنشاء مشروع جديد يدعم WebJobs

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

  • استخدم قالب مشروع WebJobs الجديد لوظيفة WebJob مستقلة

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

  • استخدم قالب مشروع WebJobs الجديد لـ WebJob المرتبط بمشروع ويب

    قم بإنشاء مشروع تم تكوينه للتوزيع تلقائياً كجهاز WebJob عند توزيع مشروع ويب في نفس الحل. استخدم هذا الخيار عندما تريد تشغيل WebJob في نفس تطبيق الويب الذي تقوم فيه بتشغيل تطبيق الويب ذي الصلة.

إشعار

يقوم قالب مشروع WebJobs الجديد تلقائياً بتثبيت حزم NuGet ويتضمن تعليمة برمجياً في Program.cs لـ WebJobs SDK. إذا كنت لا تريد استخدام WebJobs SDK، فقم بإزالة أو تغيير عبارة host.RunAndBlock في Program.cs.

  1. حدد "File">"New">"Project". في مربع الحوار Create a new project، ابحث عن وحدد Azure WebJob (.NET Framework) لـ C#‎.

  2. اتبع التوجيهات السابقة من أجل جعل تطبيق وحدة التحكم يعرض مشروع WebJobs مستقل.

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

    New Azure WebJob Project menu entry

    يظهر مربع الحوار Add Azure WebJob.

  2. أكمل مربع الحوار Add Azure WebJob، ثم حدد OK.

webjob-publish-settings.json file

عند تكوين تطبيق وحدة تحكم لتوزيع WebJobs، يقوم Visual Studio بتثبيت حزمة Microsoft.Web.WebJobs.Publish NuGet ويخزن معلومات الجدولة في ملف webjob-publish-settings.json في مجلد المشروع Properties لمشروع WebJobs. فيما يلي مثال على هذا الملف:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "WebJob1",
  "startTime": "null",
  "endTime": "null",
  "jobRecurrenceFrequency": "null",
  "interval": null,
  "runMode": "Continuous"
}

يمكنك تحرير هذا الملف مباشرة، كما أن Visual Studio يوفر IntelliSense. مخطط الملف مخزَّن في https://schemastore.org ويمكن مشاهدته هناك.

webjobs-list.json file

عند ربط مشروع تم تمكين WebJobs بمشروع ويب، يقوم Visual Studio بتخزين اسم مشروع WebJobs في ملف webjobs-list.json في مجلد خصائص لمشروع الويب. قد تحتوي المستندة إلى عدة مشاريع WebJobs، كما هو موضح في المثال التالي:

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
      "filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
    },
    {
      "filePath": "../WebJob1/WebJob1.csproj"
    }
  ]
}

يمكنك تحرير هذا الملف مباشرة في Visual Studio، باستخدام IntelliSense. تم تخزين مخطط الملف في https://schemastore.org.

قم بتوزيع مشروع WebJobs

يتم توزيع مشروع WebJobs الذي قمت بربطه بمشروع ويب تلقائياً مع مشروع الويب. للحصول على معلومات حول توزيع مشروع الويب، راجع أدلة إرشادية>توزيع التطبيق في شريط التنقل الأيسر.

لتوزيع مشروع WebJobs بمفرده، انقر بزر الماوس الأيمن فوق المشروع في مستكشف الحلول وحدد Publish as Azure WebJob.

Publish as Azure WebJob

بالنسبة إلى WebJob المستقل، يظهر نفس معالج نشر الويب المستخدم لمشاريع الويب، ولكن مع عدد أقل من الإعدادات المتاحة للتغيير.

مربع حوار إضافة Azure WebJob

يتيح لك مربع الحوار Add Azure WebJob إدخال اسم WebJob وإعداد وضع التشغيل لـ WebJob الخاص بك.

Add Azure WebJob dialog box

تتوافق بعض الحقول الموجودة في مربع الحوار هذا مع الحقول الموجودة في مربع الحوار Add WebJob في مدخل Microsoft Azure. لمزيد من المعلومات، راجع تشغيل مهام الخلفية باستخدام WebJobs في Azure App Service.

معلومات توزيع WebJob:

  • للحصول على معلومات حول توزيع سطر الأوامر، راجع تمكين سطر الأوامر أو التسليم المستمر لـ Azure WebJobs.

  • إذا قمت بتوزيع WebJob، ثم قررت أنك تريد تغيير نوع WebJob وإعادة التوزيع، فاحذف ملف webjobs-publish-settings.json. يؤدي القيام بذلك إلى قيام Visual Studio بإعادة عرض خيارات النشر، بحيث يمكنك تغيير نوع WebJob.

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

أنواع WebJob

يمكن أن يكون نوع WebJob مشغلاً أو مستمراً:

  • تم التشغيل (افتراضي): يبدأ WebJob الذي تم تشغيله بناءً على حدث ملزم، بناءً على جدول زمني، أو عند تشغيله يدوياً (عند الطلب). يتم تشغيله على مثيل واحد يعمل عليه تطبيق الويب.

  • مستمر: يبدأ WebJob المستمر فوراً عند إنشاء WebJob. يتم تشغيله على جميع مثيلات تطبيق الويب التي تم تغيير حجمها افتراضياً ولكن يمكن تهيئتها للتشغيل كمثيل واحد عبر settings.job.

إشعار

يمكن أن تنتهي مهلة تطبيق الويب بعد 20 دقيقة من عدم النشاط، ويمكن فقط للطلبات المرسلة إلى تطبيق الويب الفعلي إعادة تعيين المؤقت. لا يؤدي عرض تكوين التطبيق في مدخل Azure أو إرسال طلبات إلى موقع الأدوات المتقدمة (https://<app_name>.scm.azurewebsites.net) إلى إعادة تعيين المؤقت. إذا قمت بتعيين تطبيق الويب الذي يستضيف وظيفتك للتشغيل باستمرار، أو التشغيل وفقاً لجدول زمني، أو استخدام المشغلات المستندة إلى الأحداث، فقم بتمكين الإعداد قيد التشغيل دائماً في صفحة تكوين Azure لتطبيق الويب الخاص بك. يساعد إعداد Always on على التأكد من أن هذه الأنواع من WebJobs تعمل بشكل موثوق. هذه الميزة متاحة فقط في مستويات الأسعار الأساسية، والقياسية، والمتميزة.

جدولة WebJob المشغلة

عند نشر تطبيق وحدة تحكم إلى Azure، يعيّن Visual Studio نوع WebJob إلى Triggered افتراضياً، ويضيف ملف settings.job جديداً إلى المشروع. بالنسبة لأنواع WebJob التي تم تشغيلها، يمكنك استخدام هذا الملف لتعيين جدول تنفيذ لـ WebJob الخاص بك.

استخدم ملف settings.job لتعيين جدول تنفيذ لوظيفة WebJob. يعمل المثال التالي كل ساعة من الساعة 9 صباحاً حتى الساعة 5 مساءً:

{
    "schedule": "0 0 9-17 * * *"
}

يوجد هذا الملف في جذر مجلد WebJobs مع برنامج WebJob الخاص بك، مثل wwwroot\app_data\jobs\triggered\{job name} أو wwwroot\app_data\jobs\continuous\{job name}. عند توزيع WebJob من Visual Studio، ضع علامة على خصائص الملف settings.job في Visual Studio كـ Copy if new studio.

إذا قمت بإنشاء WebJob من مدخل Microsoft Azure، فسيتم إنشاء ملف settings.job من أجلك.

تعبيرات CRON

يستخدم WebJobs نفس تعبيرات CRON للجدولة مثل مشغل المؤقت في Azure Functions. لمعرفة المزيد حول دعم CRON، راجع مشغل المؤقت لـAzure Functions.

إشعار

المنطقة الزمنية الافتراضية المستخدمة لتشغيل تعبيرات CRON هي التوقيت العالمي (UTC). لتشغيل تعبير CRON استناداً إلى منطقة زمنية أخرى، قم بإنشاء إعداد تطبيق لتطبيق وظيفتك باسم WEBSITE_TIME_ZONE. لمعرفة المزيد، راجع المناطق الزمنية NCRONTAB.

الإعدادات. مرجع الوظيفة

الإعدادات التالية تدعمها WebJobs:

الإعداد النوع الوصف
is_in_place الكل للسماح لـ WebJob بالعمل في مكانه دون نسخه أولاً إلى مجلد مؤقت. لمزيد من المعلومات، راجع دليل عمل WebJob.
is_singleton مستمر قم بتشغيل WebJob على مثيل واحد فقط عند تصغيره. لمزيد من المعلومات، راجع تعيين وظيفة مستمرة كوظيفة فردية.
schedule مشغّلة قم بتشغيل WebJob وفقاً لجدول زمني يستند إلى CRON. لمزيد من المعلومات، راجع تعبيرات NCRONTAB.
stopping_wait_time الكل يسمح بالتحكم في سلوك الاغلاق. لمزيد من المعلومات، راجع إيقاف التشغيل بأمان.

التنفيذ المستمر

إذا قمت بتمكين التشغيل دائماً في Azure، فيمكنك استخدام Visual Studio لتغيير WebJob للتشغيل باستمرار:

  1. إذا لم تكن قد قمت بذلك بالفعل، فقم بنشر المشروع على Azure.

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

  3. في قسم Settings، اختر إظهار جميع الإعدادات.

  4. في مربع الحوار Profile settings، اختر Continuous لـ نوع WebJob، ثم اختر Save.

    Publish Settings dialog box for a WebJob

  5. حدد Publish في علامة التبويب Publish لإعادة نشر WebJob بالإعدادات المحدثة.

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