Προγραμματισμός

Πώς να εργαστείτε με το Quartz.Net στο C #

Όταν εργάζεστε σε εφαρμογές, θα πρέπει συχνά να εκτελείτε συγκεκριμένες εργασίες στο παρασκήνιο σε προκαθορισμένα χρονικά διαστήματα. Ο προγραμματισμός εργασιών σε εφαρμογές είναι μια πρόκληση και μπορείτε να επιλέξετε ανάμεσα σε πολλά διαθέσιμα πλαίσια, όπως Quartz, Hangfire κ.λπ.

Το Quartz.Net χρησιμοποιείται εδώ και πολύ καιρό και παρέχει καλύτερη υποστήριξη για εργασία με εκφράσεις Cron. Το Hangfire είναι ένα ακόμη πλαίσιο προγραμματισμού εργασιών που εκμεταλλεύεται τον αγωγό επεξεργασίας αιτημάτων του ASP.Net για επεξεργασία και εκτέλεση εργασιών.

Το Quartz.Net είναι μια θύρα .Net του δημοφιλούς πλαισίου προγραμματισμού εργασιών Java. Είναι ένα σύστημα προγραμματισμού εργασίας ανοιχτού κώδικα που μπορεί να χρησιμοποιηθεί από τις μικρότερες εφαρμογές έως τα μεγάλα εταιρικά συστήματα. Ο επίσημος ιστότοπος του Quartz.Net δηλώνει: "Το Quartz.Net είναι ένα πλήρες σύστημα ανοιχτού κώδικα προγραμματισμού εργασίας που μπορεί να χρησιμοποιηθεί από τις μικρότερες εφαρμογές έως τα μεγάλα εταιρικά συστήματα."

Ξεκινώντας

Μπορείτε να εγκαταστήσετε το Quartz.Net από την ενότητα λήψεων του επίσημου ιστότοπου του Quartz. Μπορείτε επίσης να εγκαταστήσετε το Quartz.Net μέσω του παραθύρου διαχείρισης πακέτων στο Visual Studio IDE.

Τα τρία κύρια συστατικά του Quartz είναι εργασίες, ενεργοποιητές και προγραμματιστές, δηλ. Για τη δημιουργία και τον προγραμματισμό εργασιών στο Quartz.Net, θα πρέπει να έχετε προγραμματιστές, ενεργοποιητές και εργασίες. Ενώ μια εργασία υποδηλώνει την εργασία που πρέπει να εκτελεστεί, χρησιμοποιείται μια σκανδάλη για να καθορίσει πώς θα εκτελεστεί η εργασία. Ο προγραμματιστής είναι το στοιχείο που προγραμματίζει τις εργασίες. Σημειώστε ότι πρέπει να καταχωρίσετε τις εργασίες και τους κανόνες ενεργοποίησης στον προγραμματιστή.

Προγραμματισμός Quartz.Net σε C #

Για να δημιουργήσετε μια εργασία, θα πρέπει να δημιουργήσετε μια κλάση που εφαρμόζει τη διεπαφή IJob. Παρεμπιπτόντως, αυτή η διεπαφή δηλώνει τη μέθοδο εκτέλεσης - θα πρέπει να εφαρμόσετε αυτήν τη μέθοδο στην προσαρμοσμένη κλάση εργασίας σας. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να εφαρμόσετε τη διεπαφή IJob για να σχεδιάσετε μια προσαρμοσμένη κλάση εργασίας χρησιμοποιώντας τη βιβλιοθήκη Quartz.Net.

δημόσια τάξη Job: IJob

   {

public void Execute (περιβάλλον IJobExecutionContext)

       {

// Δείγμα κώδικα που δηλώνει την εργασία που πρέπει να εκτελεστεί

       }

   }

Εδώ είναι μια απλή εφαρμογή της μεθόδου Εκτέλεση της κλάσης εργασίας - θα σας αφήσω να σχεδιάσετε την προσαρμοσμένη τάξη εργασίας σας για να ταιριάζει στις ανάγκες της εφαρμογής σας. Το απόσπασμα κώδικα που δίνεται παρακάτω γράφει την τρέχουσα τιμή DateTime ως κείμενο σε ένα αρχείο. Σημειώστε ότι αυτή η εφαρμογή δεν είναι ασφαλής για νήμα. είναι μόνο για λόγους απεικόνισης μόνο.

public void Execute (περιβάλλον IJobExecutionContext)

        {

χρησιμοποιώντας (StreamWriter streamWriter = new StreamWriter (@ "D: \ Log.txt", true))

            {

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

            }

        }

Τώρα που έχετε ήδη ορίσει την κλάση εργασίας, θα χρειαστεί να δημιουργήσετε τη δική σας τάξη προγραμματισμού εργασίας και να ορίσετε τη σκανδάλη για την εργασία σας. Ο κανόνας ετικέτας θα περιέχει τα μεταδεδομένα της εργασίας ως έκφραση cron. Μπορείτε να επισκεφθείτε αυτόν τον σύνδεσμο για να δημιουργήσετε εκφράσεις cron.

Τώρα, πώς προγραμματίζονται οι εργασίες; Λοιπόν, υπάρχει ένα στοιχείο που ονομάζεται χρονοδιάγραμμα εργασίας που είναι υπεύθυνο για τον προγραμματισμό των εργασιών σας. Στην ουσία, μπορείτε να εκμεταλλευτείτε τους προγραμματιστές εργασίας για να προγραμματίσετε τις εργασίες σας για εκτέλεση. Η ακόλουθη λίστα κωδικών δείχνει πώς μπορούμε να ορίσουμε μια σκανδάλη για την εργασία μας και, στη συνέχεια, να καταχωρήσουμε την εργασία και την σκανδάλη στον προγραμματιστή εργασίας.

δημόσια τάξη JobScheduler

   {

δημόσιο στατικό κενό Έναρξη ()

       {

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler ();

scheduler.Start ();

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

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Εργασία", "")

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

.StartAt (DateTime.UtcNow)

. Με Προτεραιότητα (1)

.Χτίζω();

scheduler.ScheduleJob (εργασία, σκανδάλη);

       }

   }

Ανατρέξτε στην λίστα κωδικών που δίνεται παραπάνω. Σημειώστε πώς έχει καθοριστεί το όνομα και η ομάδα του κανόνα ετικέτας κατά τη δημιουργία της παρουσίας ενεργοποίησης. Μόλις οριστεί και διαμορφωθεί η σκανδάλη για την εργασία χρησιμοποιώντας την απαραίτητη έκφραση cron, η σκανδάλη καταχωρείται στον προγραμματιστή εργασίας.

Μπορείτε επίσης να δημιουργήσετε μια σκανδάλη που ενεργοποιείται κάθε δευτερόλεπτο και την επαναλαμβάνει επ 'αόριστον. Ακολουθεί ένα απόσπασμα κώδικα που δείχνει πώς μπορείτε να δημιουργήσετε μια σκανδάλη όπως αυτό.

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Εργασία", "")

.Ξεκίνα τώρα()

.WithSimpleSchedule (s => s

. ΜεIntervalInSeconds (10)

. ΕπανάληψηForever ())

.Χτίζω();

Δεν χρειάζεστε πάντα υπηρεσία Windows για να ξεκινήσετε το χρονοδιάγραμμα σας. Εάν χρησιμοποιείτε μια εφαρμογή ιστού ASP.Net, μπορείτε να επωφεληθείτε από το συμβάν Application_Start του αρχείου Global.asax και, στη συνέχεια, να καλέσετε τη μέθοδο JobScheduler.Start (), όπως φαίνεται στο παρακάτω απόσπασμα κώδικα.

δημόσια τάξη Global: HttpApplication

   {

void Application_Start (αποστολέας αντικειμένου, EventArgs e)

       {

// Κωδικός που εκτελείται κατά την εκκίνηση της εφαρμογής

JobScheduler.Start ();

       }

   }

Σημειώστε ότι το JobScheduler είναι το όνομα της προσαρμοσμένης κλάσης που σχεδιάσαμε νωρίτερα. Λάβετε υπόψη ότι μπορείτε επίσης να χρησιμοποιήσετε το Quartz.Net για να αποθηκεύσετε τις εργασίες σας σε μόνιμες αποθήκες, δηλαδή μπορείτε να συνεχίσετε τις εργασίες σας στη βάση δεδομένων. Μπορείτε να γνωρίζετε τη λίστα όλων των υποστηριζόμενων καταστημάτων εργασίας από εδώ.