Hangfire یک سرویس اجرای تسکها در پسزمینه برای Asp.net Core است. در مقاله آشنائی با Hangfire و نحوه استفاده از آن، توضیح دادهایم که چطور از Hangfire در Asp.net Core استفاده نماییم.
و در این مقاله 9 دلیل برای استفاده از Hangfire را بررسی میکنیم.
سادگی در استفاده
اولین دلیل استفاده از Hangfire سادگی استفاده است. برای استفاده از Hangfire پیچیدگی بالایی به برنامه اضافه نمیکنیم.
بهعنوانمثال ما میخواهیم یک متد را درون یک کلاس بهعنوان تسک پسزمینه اضافه کنیم. دیگر نیازی نیست interface یا یک کلاس خاص را برای همان کلاس پیادهسازی کنیم یا برای آن از کلاس یا interface ارثبری انجام دهیم یا Attributeهایی را برای متدها و یا کلاسهای خود اضافه کنیم.
در کد هیچ تغیری ایجاد نمیکنیم، همان ساختاری که تابهحال داشتهایم را حفظ میکنیم و با یک خط کد آن را به Hangfire معرفی میکنیم و در زمانی که برای آن مشخص کردهایم بهعنوان تسک پسزمینه اجرا میشود و هیچ کار اضافه دیگر لازم نیست انجام دهیم.
فقط کافی است که Hangfire را configure کنیم و هر متدی که میخواهیم بهعنوان تسک پسزمینه اجرا شود با یک خط کد میتوانیم این کار را انجام دهیم و خیلی راحت فرایند تسکهای پسزمینه را انجام دهیم.
ذخیره تسکها در دیتابیس
Hangfire تسکهایی که بهعنوان پسزمینه معرفی میکنیم را در یک دیتابیس ذخیره میکند. دیتابیسهای Redis و SQL Server بهصورت رسمی توسط Hangfire پشتیبانی میشوند.
به این دلیل که Hangfire اوپک سورس است،دیتابیسهای دیگری برای آن توسعه داده شده است و حتی میتوانیم دیتابیسهای اختصاصی را برایش توسعه دهیم که دیتای خود را روی هر دیتابیسی که بخواهیم نگهداری کنیم.
شفافیت
دلیل بعدی شفافیت بالای Hangfire است. ممکن است تعداد زیادی تسک پسزمینه در برنامه خود داشته باشیم، باید آنها را ببینیم و مدیریت کنیم تا بتوانیم آنها را stop کنیم،اجرا کنیم،حذف کنیم.
Hangfire یک داشبورد دارد که میتوانیم تسکها را ببینیم و مدیریت کنیم و برای login نیز سیستمهای مختلفی را پشتیبانی میکند.
قابلاعتماد
دلیل بعدی قابلاعتماد بودن Hangfire است. میتوانیم به آن اعتماد کنیم که تسکی که بهعنوان پسزمینه به آن معرفی کردهایم را اجرا میکند.
زمانی که یک تسک به آن میدهیم و روی دیتابیس ذخیره میکند تا آن را اجرا کند، اگر در آن لحظه exception داشته باشد سعی میکند بعداً دوباره آن را اجرا کند و ما میتوانیم تعداد مشخصی تعداد برای آن وارد کنیم مثلاً 10 بار یا 100 بار که آن را اجرا کند اگر بعدازاین تعداد باز exception بدهد به قسمت fail انتقال پیدا میکند و میتوانیم عدم اجرای آن و خطاهای آن را مشاهده میکنیم که بتوانیم مشکل آن را برطرف کنیم.
توزیع شده
Hangfire بهصورت توزیع شده ارائه شده است و با این قابلیت میتوانیم hangfire را بر روی چندین سرور اجرا کنیم.
و همین قابلیت توزیع شده باعث میشود که با چندین سرور بتوانیم همزمان تسکهای بسیار بیشتری را اجرا کنیم.
قابل توسعه
مورد بعدی قابل توسعه بودن Hangfire است ما میتوانیم آن را برای خود توسعه دهیم و قابلیتهای جدیدی به آن اضافه کنیم.
بهعنوانمثال با استفاده از Job filter ها میتوانیم یک سری قابلیت که مد نظرمان است و توسط Hangfire هنوز پشتیبانی نشده است به آن اضافه کنیم.
و یا با استفاده از امکاناتی که توسط Job Storage در اختیار ما قرار میدهد میتوانیم برای هر دیتابیس پیادهسازی آن را انجام دهیم که تسکهای پسزمینهای که به Hangfire ارسال میکنیم روی دیتابیس مدنظر ما ذخیره شود.
بهعنوانمثال میتوانیم با استفاده از Job Storage ها، دادههای hangfire را روی انواع دیتابیس مثل MongoDb و... ذخیره نماییم.
سرعت بالا
Hangfire سرعت بسیار بالائی دارد و بهصورت پیشفرض دادهها را روی SQL Server ذخیره میکند.
اما برای بالابردن سرعت میتوانیم از Redis استفاده کنیم، همانطور که میدانید Redis چندین برابر SQL Server سرعت پردازش بالاتری دارد و اگر یک سیستم بزرگتری داشته باشیم میتوانیم از Redis استفاده کنیم .
مدیریت خودکار دادهها
Hangfire مدیریت خودکار دادهها را انجام میدهد. تسکهای زیادی را روی دیتابیس ذخیره میکنیم و بعد از مدتی دیگر نیازی به آنها نداریم که روی دیتابیس باقی بمانند، خود Hangfire این موارد را مدیریت میکند و دادههایی که دیگر موردنیاز نیستند را حذف میکند.
Open Source
خوشبختانه Hangfire اوپک سورس است و افراد خیلی زیادی روی این سورس کار میکنند و نسبت به سیستمی که اوپک سورس نیست خیلی سریعتر رشد میکند و تمامی مزایای یک سیستم اوپک سورس را دارد
اگر شما هم در اپلیکیشنهایی که با دات نت توسعه میدهید تسکهای دارید که مدتزمان نسبتاً زیادی (بیش از 1 ثانیه) برای انجام آنها نیاز است، باید برای افزایش سرعت آن تسک را در پسزمینه انجام دهید.
البته روشهای زیادی برای انجام تسکها در پسزمینه وجود دارد، اما با اینهمه ویژگی که hangfire بهصورت رایگان در اختیار ما قرار میدهید منطقی است که از hangfire استفاده کنیم.
اگر میخواهید تسکهای طولانی را در پسزمینه انجام دهید.
اگر میخواهید سرعت Response Time اپلیکیشن را بالاتر ببرید.
اگر میخواهید تسکهای تکراری را طبق برنامه زمانبندی شده انجام دهید.
بهترین گزینه برای شما استفاده از hangfire است.
اگر میخواهید کامل با Background Tasks ها در دات نت آشنا بشوید و موارد حرفه ای کار با Hangfire را یاد بگیرید پیشنهاد می کنم حتما در دوره background Tasks شرکت نمایید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید