כיצד לעבוד עם Hangfire ב- C #

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

מדוע עלי להשתמש ב- Hangfire?

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

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

מתחילים

כדי ליצור פרויקט חדש ב- Visual Studio המנצל את Hangfire, בצע את הצעדים הבאים:

  1. פתח את Visual Studio 2015
  2. לחץ על קובץ> חדש> פרויקט
  3. בחר Visual C #> אינטרנט מרשימת תבניות הפרויקט המוצגות
  4. בחר יישום אינטרנט ASP.Net מרשימת התבניות של פרויקט האינטרנט
  5. שמור את הפרויקט עם שם

השלב הבא הוא התקנה והגדרת תצורה של Hangfire ביישום שלך; התהליך פשוט למדי. ניתן להתקין את Hangfire דרך מנהל החבילות NuGet ב- Visual Studio. לחלופין, אתה יכול גם להשתמש במסוף מנהל החבילות כדי להתקין את ספריית Hangfire. התקנת ברירת המחדל של Hangfire משתמשת בשרת SQL לאחסון מידע על תזמון. בנוסף, באפשרותך להתקין את Hangfire.Redis אם אתה משתמש ב- Redis במקום לצורך אחסון.

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

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

using Hangfire;

using Microsoft.אואין;

using Owin;

using System;

[assembly: OwinStartupAttribute(סוג של(HangFire.Startup))]

namespace HangFire

{

    public partial class Startup

    {

        public void Configuration(IAppBuilder app)

        {

            ConfigureAuth(app);

            GlobalConfiguration.Configuration

                .UseSqlServerStorage("DefaultConnection");

            BackgroundJob.Enqueue(() => Console.WriteLine("Getting Started with HangFire!"));

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }

    }

}

אתה מוכן. כאשר אתה מריץ את היישום ומספר את כתובת האתר עם "/ hangfire", אתה יכול לראות את לוח המחוונים של Hangfire. כאשר אתה מבצע זאת בפעם הראשונה, נוצרת טבלה חדשה במסד הנתונים. הטבלאות שנוצרות כוללות AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set, and State. יצירת רקע אש ושכח בהאנגפייר היא די פשוטה. ניתן ליצור עבודת רקע Enqueue()בשיטת BackgroundJobהכיתה. הנה דוגמה:

BackgroundJob.Enqueue(() => Console.WriteLine("This is a fire-and-forget job that would run in the background."));

עבודת רקע מושהית היא עבודה שמחכה (למרווח העיכוב) ואז מבצעת את אותה דרך כמו עבודת רקע רגילה של אש ושכח. קטע הקוד הבא ממחיש כיצד ניתן ליצור עבודת רקע מושהית Schedule()בשיטת BackgroundJobהכיתה.

BackgroundJob.Schedule(() => Console.WriteLine("This background job would execute after a delay."), TimeSpan.FromMilliseconds(1000));

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

RecurringJob.AddOrUpdate(() => Console.WriteLine("This job will execute once in every minute"), Cron.Minutely);

עיין במדריך ההדגשות של Hangfire למידע נוסף.