כיצד לעבוד עם Quartz.Net ב- C #

בעת עבודה על יישומים, לרוב תצטרך לבצע משימות מסוימות ברקע בפרקי זמן מוגדרים מראש. תזמון משרות ביישומים הוא אתגר, ותוכלו לבחור בין מסגרות זמינות רבות מסביב, כגון קוורץ, Hangfire וכו '.

Quartz.Net נמצא בשימוש זמן רב ומספק תמיכה טובה יותר בעבודה עם ביטויי Cron. Hangfire מהווה עוד מסגרת מתזמנת עבודה המנצלת את צינור עיבוד הבקשות של ASP.Net לצורך עיבוד וביצוע עבודות.

Quartz.Net הוא יציאת .Net במסגרת הפופולרית לתזמון עבודות Java. זו מערכת תזמון עבודות קוד פתוח שניתן להשתמש בה מאפליקציות קטנות ביותר למערכות ארגוניות בקנה מידה גדול. באתר הרשמי של Quartz.Net נאמר: "Quartz.Net היא מערכת תזמון משרות קודמת הכוללת תכונות מלאות, שניתן להשתמש בהן מאפליקציות קטנות ביותר ועד מערכות ארגוניות בקנה מידה גדול."

מתחילים

ניתן להתקין את Quartz.Net ממדור ההורדות באתר הרשמי של Quartz. אתה יכול גם להתקין את Quartz.Net דרך חלון מנהל החבילות ב- Visual Studio IDE שלך.

שלושת המרכיבים העיקריים בקוורץ הם משרות, טריגרים ומתזמנים, כלומר, כדי ליצור ולתזמן משרות ב- Quartz.Net, יהיה עליכם לקבל מתזמנים, מפעילים ומשרות. בעוד שעבודה מציינת את המשימה שצריך לבצע, משתמשים בהדק כדי לציין כיצד תבוצע העבודה. המתזמן הוא הרכיב שמתזמן את העבודות. שים לב שעליך לרשום את המשרות והטריגרים שלך בתזמון.

תכנות Quartz.Net ב- C #

כדי ליצור עבודה, עליך ליצור מחלקה המיישמת את ממשק IJob. אגב, ממשק זה מכריז על שיטת הביצוע - עליכם ליישם שיטה זו בכיתת המשרות המותאמת אישית שלכם. קטע הקוד הבא ממחיש כיצד ניתן ליישם את ממשק IJob כדי לעצב מחלקת עבודה מותאמת אישית באמצעות ספריית Quartz.Net.

public class Job : IJob

   {

       public void Execute(IJobExecutionContext context)

       {

           //Sample code that denotes the job to be performed

       }

   }

הנה יישום פשוט של שיטת הביצוע של מחלקת המשרות - אשאיר לך לעצב את מעמד המשרה המותאם אישית שלך כך שיתאים לצרכי היישום שלך. קטע הקוד המופיע להלן כותב את ערך DateTime הנוכחי כטקסט לקובץ. שים לב כי יישום זה אינו בטוח בהשחלה; זה רק לצורך המחשה בלבד.

public void Execute(IJobExecutionContext context)

        {

            using (StreamWriter streamWriter = new StreamWriter(@"D:\Log.txt", true))

            {

                streamWriter.WriteLine(DateTime.Now.ToString());

            }

        }

כעת, לאחר שכבר הגדרת את מחלקת המשרה, יהיה עליך ליצור מחלקה מתזמן משרה משלך ולהגדיר את ההדק לתפקידך. הדק יכיל את מטא הנתונים של העבודה כביטוי cron. אתה יכול לבקר בקישור זה כדי ליצור ביטויי cron.

עכשיו, איך התפקידים נקבעים? ובכן, יש רכיב שנקרא מתזמן עבודה שאחראי לתזמון העבודות שלך. למעשה, אתה יכול לנצל את מתזמני התפקידים כדי לתזמן את עבודותיך לביצוע. רישום הקוד הבא ממחיש כיצד אנו יכולים להגדיר טריגר עבור העבודה שלנו ולאחר מכן לרשום את העבודה ואת ההדק באמצעות מתזמן העבודה.

public class JobScheduler

   {

       public static void Start()

       {

           IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

           scheduler.Start();

           IJobDetail job = JobBuilder.Create().Build();

           ITrigger trigger = TriggerBuilder.Create()

               .WithIdentity("Job", "")

               .WithCronSchedule("0 0/1 * 1/1 * ? *")

               .StartAt(DateTime.UtcNow)

               .WithPriority(1)

               .Build();

              scheduler.ScheduleJob(job, trigger);

       }

   }

עיין ברישום הקוד המופיע לעיל. שים לב כיצד צוינו שם וקבוצת הדק בעת יצירת מופע הדק. לאחר שהטריגר למשימה מוגדר ומוגדר באמצעות ביטוי cron הדרוש, ההדק רשום בתזמון העבודה.

אתה יכול גם לבנות טריגר שמופעל כל שנייה וחוזר עליו ללא הגבלת זמן. הנה קטע קוד שממחיש כיצד ניתן לבנות טריגר כזה.

ITrigger trigger = TriggerBuilder.Create()

 .WithIdentity("Job", "")

   .StartNow()

   .WithSimpleSchedule(s => s

       .WithIntervalInSeconds(10)

       .RepeatForever())

   .Build();

לא תמיד אתה זקוק לשירות Windows כדי להפעיל את מתזמן העבודה שלך. אם אתה משתמש ביישום אינטרנט ASP.Net, אתה יכול לנצל את האירוע Application_Start של הקובץ Global.asax ואז להתקשר לשיטת JobScheduler.Start () כפי שמוצג בקטע הקוד שלמטה.

public class Global : HttpApplication

   {

       void Application_Start(object sender, EventArgs e)

       {

           // Code that runs on application startup

           JobScheduler.Start();

       }

   }

שים לב ש- JobScheduler הוא שם המחלקה המותאמת אישית שתכננו קודם. שים לב שאתה יכול גם למנף את Quartz.Net כדי לאחסן את עבודותיך במחסנים מתמשכים, כלומר, אתה יכול לשמור על עבודותיך גם במסד נתונים. תוכלו לדעת מכאן את רשימת כל חנויות העבודה הנתמכות.