تطوير وتوزيع 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.
فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وحددنشر.
في مربع الحوار Publish ، حدد Azure for Target، ثم حدد Next.
حدد Azure WebJobs لهدف محدد، ثم حدد التالي.
أعلى مثيلات App Service حدد زر الجمع (+) لإنشاء Azure WebJob جديد.
في مربع الحوار App Service (Windows)، استخدم إعدادات الاستضافة في الجدول التالي.
الإعدادات القيمة المقترحة الوصف الاسم اسم فريد عالميًا الاسم الذي يعرّف بشكل فريد تطبيق الدالة الجديد الخاص بك. الاشتراك اختر اشتراكك اشتراك معرف Azure المطلوب استخدامه. مجموعة الموارد myResourceGroup اسم مجموعة الموارد التي يتم من خلالها إنشاء تطبيق دالة. اختر جديد لإنشاء مجموعة موارد جديدة. نوع خطة الاستضافة خطة App Service تحددخطة خدمة تطبيقاتموقع مزرعة خوادم الويب التي تستضيف تطبيقك، وحجمها، ومزاياها. يمكنك توفير المال عند استضافة عدة تطبيقات بتكوين تطبيقات الويب لمشاركة خطة خدمة تطبيقات واحدة. تحدد خطط خدمة التطبيقات المنطقة وحجم المثيل وعدد المقاييس وSKU (مجاني أو مشترك أو أساسي أو قياسي أو متميز). اختر جديد لإنشاء خطة App Service جديدة. لا يدعم المستويان Free وBasic خيار Always On للحفاظ على تشغيل موقعك بشكل مستمر. حدد Create لإنشاء WebJob والموارد ذات الصلة في Azure باستخدام هذه الإعدادات ونشر التعليمات البرمجية لمشروعك.
حدد إنهاء للعودة إلى صفحة النشر .
WebJobs كتطبيقات وحدة تحكم .NET Framework
إذا كنت تستخدم Visual Studio لتوزيع مشروع تطبيق .NET Framework console الممكّن لـ WebJobs، فإنه ينسخ ملفات وقت التشغيل إلى المجلد المناسب في تطبيق الويب (App_Data / jobs / Continuous للحصول على WebJobs المستمر وApp_Data/jobs/المشغلة لبرامج WebJobs المجدولة أو عند الطلب).
يضيف Visual Studio العناصر التالية إلى مشروع يدعم WebJobs:
- حزمة Microsoft.Web.WebJobs.Publish NuGet.
- ملف webjob-publish-settings.json يحتوي على إعدادات الجدولة والتوزيع.
يمكنك إضافة هذه العناصر إلى مشروع تطبيق وحدة تحكم موجود أو استخدام قالب لإنشاء مشروع تطبيق وحدة تحكم جديد يدعم WebJobs.
قم بتوزيع مشروعاً كجهاز WebJob بمفرده، أو اربطه بمشروع ويب بحيث يتم توزيعه تلقائياً عند توزيع مشروع الويب. لربط المشاريع، يقوم Visual Studio بتضمين اسم المشروع الذي يدعم WebJobs في ملف webjobs-list.json في مشروع الويب.
المتطلبات الأساسية
قم بتثبيت Visual Studio 2022 مع أحمال عمل تطوير Azure.
تفعيل توزيع WebJobs لمشروع تطبيق وحدة تحكم موجود
لديك خياران:
تمكين التوزيع التلقائي مع مشروع ويب.
قم بتكوين مشروع تطبيق وحدة تحكم موجود بحيث يتم توزيعه تلقائياً باعتباره WebJob عند توزيع مشروع ويب. استخدم هذا الخيار عندما تريد تشغيل WebJob في نفس تطبيق الويب الذي تقوم فيه بتشغيل تطبيق الويب ذي الصلة.
-
قم بتكوين مشروع تطبيق وحدة تحكم موجود للتوزيع كجهاز WebJob بنفسه، بدون ارتباط بمشروع ويب. استخدم هذا الخيار عندما تريد تشغيل WebJob في تطبيق ويب بمفرده، بدون تشغيل تطبيق ويب في تطبيق الويب. قد ترغب في القيام بذلك لتوسيع نطاق موارد WebJob الخاصة بك بشكل مستقل عن موارد تطبيقات الويب الخاصة بك.
تمكين التوزيع التلقائي WebJobs مع مشروع ويب
انقر بزر الماوس الأيمن فوق مشروع الويب في مستكشف الحلول، ثم حدد Add>مشروع حالي مثل Azure WebJob.
يظهر مربع الحوار Add Azure WebJob.
في القائمة المنسدلة Project name، حدد مشروع تطبيق وحدة التحكم لإضافته كـ WebJob.
أكمل مربع الحوار Add Azure WebJob، ثم حدد OK.
تفعيل توزيع WebJobs بدون مشروع ويب
انقر بزر الماوس الأيمن فوق مشروع تطبيق وحدة التحكم في مستكشف الحلول، ثم حدد Publish as Azure WebJob.
يظهر مربع الحوار Add Azure WebJob، مع تحديد المشروع في المربع Project name.
أكمل مربع الحوار 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.
استخدم قالب مشروع WebJobs الجديد لوظيفة WebJob مستقلة
حدد "File">"New">"Project". في مربع الحوار Create a new project، ابحث عن وحدد Azure WebJob (.NET Framework) لـ C#.
اتبع التوجيهات السابقة من أجل جعل تطبيق وحدة التحكم يعرض مشروع WebJobs مستقل.
استخدم قالب مشروع WebJobs الجديد لـ WebJob المرتبط بمشروع ويب
انقر بزر الماوس الأيمن فوق مشروع الويب في مستكشف الحلول، ثم حدد Add>مشروع Azure WebJob جديد.
يظهر مربع الحوار Add Azure WebJob.
أكمل مربع الحوار 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.
بالنسبة إلى WebJob المستقل، يظهر نفس معالج نشر الويب المستخدم لمشاريع الويب، ولكن مع عدد أقل من الإعدادات المتاحة للتغيير.
مربع حوار إضافة Azure WebJob
يتيح لك مربع الحوار Add Azure WebJob إدخال اسم WebJob وإعداد وضع التشغيل لـ WebJob الخاص بك.
تتوافق بعض الحقول الموجودة في مربع الحوار هذا مع الحقول الموجودة في مربع الحوار 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 للتشغيل باستمرار:
إذا لم تكن قد قمت بذلك بالفعل، فقم بنشر المشروع على Azure.
فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وحددنشر.
في قسم Settings، اختر إظهار جميع الإعدادات.
في مربع الحوار Profile settings، اختر Continuous لـ نوع WebJob، ثم اختر Save.
حدد Publish في علامة التبويب Publish لإعادة نشر WebJob بالإعدادات المحدثة.