مخطط المهام في C# (.NET): Quartz.NET وHangfire وCoravel

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مخطط المهام في C# (.NET): Quartz.NET وHangfire وCoravel



في تطبيقات .NET الحديثة، غالبًا ما يكون من الضروري تنفيذ الكود ليس فقط بناءً على طلب المستخدم، ولكن أيضًا وفقًا لجدول زمني: إرسال النشرات البريدية، تنظيف قاعدة البيانات، إنشاء التقارير، المزامنة مع واجهات برمجة التطبيقات الخارجية. لهذا الغرض، يتم استخدام مخططي المهام (Job Schedulers). في هذه المقالة، سنستعرض ثلاث أدوات شائعة لـ C# (.NET): Quartz.NET وHangfire وCoravel، وميزاتها، وأمثلة على الكود، وسيناريوهات الاستخدام.



لماذا تحتاج إلى مخطط مهام في .NET؟

يتيح لك مخطط المهام:

  • تنفيذ المهام الخلفية في وقت محدد (على سبيل المثال، كل يوم في الساعة 8:00 صباحًا).
  • تكرار المهام بفاصل زمني محدد (كل 5 دقائق).
  • معالجة قوائم انتظار المهام دون حظر التدفق الرئيسي للتطبيق.
  • إدارة المهام بسهولة (إضافة، حذف، إيقاف مؤقت).
  • ضمان تحمل الأخطاء (إعادة المحاولة عند حدوث أخطاء).


1. Quartz.NET — مخطط قوي ومرن

Quartz.NET هو نسخة من إطار Java الشهير Quartz لـ .NET. وهو يدعم الجداول الزمنية المعقدة (تعبيرات cron)، والتجميع العنقودي، واستمرارية المهام في قاعدة البيانات. مناسب للمشاريع المؤسسية.



التثبيت

dotnet add package Quartzdotnet add package Quartz.Extensions.Hosting


مثال: مهمة بجدول cron

using Quartz;using Quartz.Impl;using System.Threading.Tasks;

public class EmailJob : IJob{ public async Task Execute(IJobExecutionContext context) { Console.WriteLine($"إرسال البريد الإلكتروني في {DateTime.Now}"); // منطق إرسال البريد await Task.CompletedTask; }}

// الإعداد في Program.csvar scheduler = await StdSchedulerFactory.GetDefaultScheduler();await scheduler.Start();

var job = JobBuilder.Create<EmailJob>() .WithIdentity("emailJob", "group1") .Build();

var trigger = TriggerBuilder.Create() .WithIdentity("emailTrigger", "group1") .WithCronSchedule("0 0 8 * * ?") // كل يوم في الساعة 8:00 صباحًا .Build();

await scheduler.ScheduleJob(job, trigger);


الميزات

  • دعم تعبيرات cron (جدول زمني مرن).
  • التجميع العنقودي للأنظمة الموزعة.
  • الاستمرارية (يتم حفظ المهام عند إعادة التشغيل).
  • أداء عالٍ لآلاف المهام.


2. Hangfire — البساطة وواجهة مستخدم مدمجة

Hangfire هو مخطط مهام بأقل قدر من التكوين ولوحة ويب مدمجة لمراقبة المهام. مثالي للمشاريع الصغيرة والمتوسطة حيث يكون التكامل السريع مهمًا.



التثبيت

dotnet add package Hangfiredotnet add package Hangfire.SqlServer (للتخزين في قاعدة البيانات)


مثال: مهمة بسيطة مع تأخير وتكرار

using Hangfire;using Hangfire.SqlServer;

// الإعداد في Program.csGlobalConfiguration.Configuration .UseSqlServerStorage("YourConnectionString");

app.UseHangfireServer();app.UseHangfireDashboard(); // الوصول إلى /hangfire

// إنشاء مهمةBackgroundJob.Schedule(() => Console.WriteLine("مهمة مؤجلة"), TimeSpan.FromMinutes(5));RecurringJob.AddOrUpdate("daily-report", () => Console.WriteLine("تقرير يومي"), Cron.Daily);


الميزات

  • واجهة ويب مدمجة للمراقبة (بدون تبعيات إضافية).
  • دعم قوائم الانتظار، وإعادة المحاولة، والمهام المؤجلة.
  • سهولة التكامل مع ASP.NET Core.
  • تخزين المهام في SQL Server وRedis وPostgreSQL.


3. Coravel — خفيف وحديث

Coravel هو مخطط مهام بسيط لـ .NET، مستوحى من Laravel. لا يتطلب تبعيات خارجية

توصيات