البرمجة

تنفيذ مهمة مجدولة في ASP.NET Core MVC

بالطبع، يمكنك تنفيذ مهمة مجدولة في تطبيق ASP.NET Core MVC لتشغيلها في كل يوم جديد. هذا يمكن أن يكون مفيدًا لأنواع مختلفة من المهام مثل تنظيف قاعدة البيانات، إرسال تقارير بشكل دوري، أو تحديث بيانات منتجاتك بناءً على جدول زمني. لتحقيق ذلك في ASP.NET Core MVC، يمكنك استخدام مكتبة مدير المهام المجدولة الخاصة بـ .NET Core.

في البداية، يجب عليك تثبيت مكتبة مدير المهام المجدولة باستخدام NuGet. يمكنك فعل ذلك من خلال موجه الأوامر NuGet Package Manager Console في Visual Studio باستخدام الأمر التالي:

mathematica
Install-Package Microsoft.Extensions.Hosting.WindowsServices

بمجرد تثبيت المكتبة، يمكنك إنشاء مهمة مجدولة بسهولة. هناك عدة خطوات يجب اتباعها:

  1. قم بإنشاء فئة تنفيذ المهمة، ويجب أن تنفذ واجهة IHostedService. يمكنك تسمية هذه الفئة بأي اسم تريده، على سبيل المثال DailyTaskService. في داخل هذه الفئة، ستكتب الكود الخاص بالمهمة التي تريد تنفيذها في كل يوم جديد.

  2. ثم، قم بتسجيل خدمتك في طريقة ConfigureServices في فئة Startup.cs لتتمكن من استخدامها في تطبيقك.

  3. بعد ذلك، قم بتكوين البرنامج الرئيسي (Main) للتطبيق لتسجيل خدمتك باعتبارها جزءًا من تشغيل التطبيق.

  4. وأخيرًا، قم بتكوين الخيارات الخاصة بك لتحديد وقت تشغيل المهمة المجدولة.

سأقدم لك مثالًا على كيفية تنفيذ ذلك:

في البداية، يمكنك إنشاء فئة تنفيذ المهمة:

csharp
using Microsoft.Extensions.Hosting; using System; using System.Threading; using System.Threading.Tasks; public class DailyTaskService : IHostedService, IDisposable { private Timer _timer; public Task StartAsync(CancellationToken cancellationToken) { _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromDays(1)); return Task.CompletedTask; } private void DoWork(object state) { // يمكنك هنا وضع العمليات التي تريد تنفيذها بشكل دوري في كل يوم جديد Console.WriteLine("Running daily task..."); } public Task StopAsync(CancellationToken cancellationToken) { _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } }

ثم، قم بتسجيل هذه الخدمة في Startup.cs:

csharp
public void ConfigureServices(IServiceCollection services) { services.AddHostedService(); }

وأخيرًا، قم بتكوين البرنامج الرئيسي (Main) لتطبيقك:

csharp
public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });

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

المزيد من المعلومات

بالطبع، سنواصل الآن تكملة المقال لتوفير معلومات إضافية وتفاصيل حول تنفيذ المهمة المجدولة في تطبيق ASP.NET Core MVC.

5. تكوين الخيارات لتحديد وقت تشغيل المهمة المجدولة:

لتحديد وقت تشغيل المهمة المجدولة، يمكنك استخدام مكونات Microsoft.Extensions.Options لتحميل إعدادات التطبيق من مصادر مختلفة مثل JSON أو ملفات تكوين. يمكنك أيضًا تكوين الوقت المحدد لتشغيل المهمة مباشرة في كود التطبيق.

على سبيل المثال، إذا أردت تحديد وقت تشغيل المهمة في الساعة 12:00 صباحًا بتوقيت UTC، يمكنك تحديد ذلك في طريقة StartAsync في فئة DailyTaskService كما يلي:

csharp
public Task StartAsync(CancellationToken cancellationToken) { // حساب الوقت المتبقي حتى الساعة 12:00 صباحًا بتوقيت UTC var now = DateTime.UtcNow; var timeUntilMidnight = DateTime.UtcNow.Date.AddDays(1) - now; _timer = new Timer(DoWork, null, timeUntilMidnight, TimeSpan.FromDays(1)); return Task.CompletedTask; }

6. التعامل مع الاستثناءات:

يجب أيضًا أن تكون على دراية بكيفية التعامل مع الاستثناءات في المهمة المجدولة. يفضل أن تقوم بالتعامل مع الاستثناءات داخل المهمة نفسها لتجنب تعليق التطبيق بأكمله في حال حدوث خطأ.

يمكنك التعامل مع الاستثناءات في طريقة DoWork في فئة DailyTaskService عن طريق استخدام بيانات التجربة (try-catch) كما يلي:

csharp
private void DoWork(object state) { try { // العمليات التي تريد تنفيذها بشكل دوري في كل يوم جديد Console.WriteLine("Running daily task..."); } catch (Exception ex) { // التعامل مع الاستثناءات هنا، مثل تسجيل الخطأ أو إرسال إشعار بالبريد الإلكتروني Console.WriteLine($"An error occurred: {ex.Message}"); } }

اختبار المهمة المجدولة:

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

خلاصة:

تنفيذ مهمة مجدولة في تطبيق ASP.NET Core MVC يمكن أن يكون مفيدًا للعديد من الأغراض، مثل تنظيف قاعدة البيانات، وإرسال التقارير بشكل دوري، وتحديث بيانات التطبيق. من خلال استخدام مكتبة مدير المهام المجدولة الخاصة بـ .NET Core وتكوين الخدمة المجدولة بشكل صحيح، يمكنك تنفيذ المهام بشكل فعال ومنتظم في تطبيقك ASP.NET Core MVC.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر