Background Tasks در Asp.Net Core


  • مدرس: احسان بابائی
  • مخاطب: برنامه‌نویسان

1,960,000 تومان


برای مشاهده ویدئوهای آموزشی، ابتدا به بخش «دوره‌های ویژه» در حساب کاربری خود رفته و روی گزینه «اطلاعات بیشتر» کنار دوره مورد نظر کلیک کنید. سپس، راهنمای نصب اسپات پلیر را مطالعه نمایید. پس از وارد کردن لایسنس در اسپات پلیر، امکان مشاهده ویدئوها فراهم خواهد شد.

دوره Background Tasks  در Asp.Net Core
 

دیگر کافی است! کاربران نباید زمان زیادی منتظر دریافت Response از WebApplication شما بمانند!

 

  • با Background Task کاربران WebApplication شما ثانیه‌های زیادی منتظر Response نمی‌مانند.
  • با Background Task سرعت WebApplication خود را چندبرابر افزایش دهید.
  •  Taskهای تکراری را طبق زمان‌بندی که برای آن مشخص کرده‌اید در پس‌زمینه WebApplication به‌صورت خودکار اجرا می‌شوند

برنامه‌نویسان آماتور تمامی نیازهای اپلیکیشن را در درخواست‌های که کاربر به WebApplication  ارسال می‌کند انجام می‌دهند، اما در برنامه‌های مدرن بخشی از نیاز هر WebApplication  را باید در پس‌زمینه انجام دهیم.

 

Background Task چیست؟

 

Background Task  چیست؟


Background Task فرایندی است که در پشت صحنه و بدون دخالت کاربر انجام می شود. فرایند های مانند اطلاع رسانی ها، ثبت Log ، نظارت بر سیستم ... Backgroun Task  بعد از ایجاد به صورت خودکار در پس زمینه  و به صورت مستقل اجرا می شود.

 

چه نوع کارهایی را می‌توانیم در Background Task انجام دهیم؟

 


هر کاری که به بیشتر از ۱ ثانیه زمان نیاز دارد برای تکمیل شدن باید در background Task انجام دهیم، البته به‌شرط آن که نیازی به ارسال پاسخ در همان لحظه برای کاربر نداشته باشیم.
به‌عنوان‌مثال در حالت عادی اعتبارسنجی داده‌های که از طرف کاربر ارسال شده است را باید در همان لحظه برای کاربر ارسال کنیم و کاربر را مطلع سازیم که داده‌های ارسالی معتبر نیستند.
در ادامه ۱۱ مورد از کارهایی که باید در background Task انجام شوند را معرفی می‌کنیم.

1-    ارسال و دریافت پیامک


امروزه Sms به جزء جدایی‌ناپذیر Web Applicationها تبدیل شده است. زمانی که از سرویس‌های ارسال و دریافت پیام کوتاه در WebApplication استفاده می‌کنیم ناخواسته یک تأخیر در Responseهایی که برای کاربر ارسال می‌شود را ایجاد کرده‌ایم.
این تأخیر به این دلیل است که ما داریم یک وب‌سرویس خارج از WebApplication در بستر اینترنت استفاده می‌کنیم و همین می‌تواند باعث کندی استفاده از آن وب‌سرویس باشد.  
با استفاده از Background Task  می‌توانیم   Sms را در پس‌زمینه ارسال کنیم و کاربر مجبور نیست مدت‌زمان زیادی برای دریافت Response  منتظر بماند.
اما در یک Web Application مدرن فقط ارسال و دریافت یک پیامک ساده مثل کد اعتبارسنجی، نداریم. ممکن است بخواهیم گزارش‌هایی برای دسته‌ای از کاربران Sms کنیم. مثلاً هر هفته ساعت ۲۳ روز جمعه یک گزارش از فروش هفته جاری برای مدیران فروش ارسال کنیم و یا ۶ماهه اول سال  آخرین چهارشنبه هر ماه بخواهیم یک Sms تبلیغاتی برای کاربران ارسال کنیم.
دیگر در این شرایط اگر از Background Taskها استفاده نکنیم قادر به توسعه و پیاده‌سازی  همچنین فیچرهایی نداریم.


2-    تماس تلفنی


در حال حاضر ما می‌توانیم در اپلیکیشن‌های خودمان با استفاده از سرویس‌های که ارائه شده است قابلیت تماس تلفنی ایجاد نماییم.
همه ما به‌خوبی می‌دانیم که برقراری یک تماس تلفنی می‌تواند چقدر زمان‌بر باشد، و از حوصله کاربر خارج است که  در پشت یک اپلیکیشن قفل شده منتظر بماند برای تکمیل یک فرایند که شاید ده‌ها ثانیه طول بکشد.
و شاید در اپلیکیشن خود طبق برنامه زمان‌بندی می‌خواهید هر هفته ساعت ۱۰ صبح روز شنبه با تعدادی از مشتریان تماس گرفته شود و  یک‌صدای از قبل ضبط شده برای آن‌ها پخش شود.
اگر در اپلیکیشن خود از سرویس‌های تماس تلفنی استفاده می‌کنید حتماً باید با Background Taskها آشنایی داشته باشید که بتوانید یک Web Application  مدرن طراحی و پیاده‌سازی نمایید.

 

3-    ارسال ایمیل


ارسال ایمیل هم دقیقاً شرایط ارسال Sms را دارد و از بخش‌های مختلفی از Web Application مورداستفاده قرار می‌گیرد یا حتی طبق برنامه زمان‌بندی شده‌ای ایمیل‌هایی برای کاربران ارسال می‌کنیم.
برای ارسال ایمیل هم قاعدتاً داریم از یک وب‌سرویس استفاده می‌کنیم و این هم می‌توانید تأخیر در Application ایجاد کند.
مطمئنم تابه‌حال در Web Applicationهای خود فواید ارسال ایمیل را پیاده‌سازی کرده‌اید، و اگر ارسال ایمیل را در پس‌زمینه انجام نداده‌اید، دردی که کاربران شما برای منتظر ماندن برای Response یک Request  که در آن یک یا چند ایمیل هم ارسال شده است را به‌خوبی درک می‌کنید.
با استفاده از background Task  می‌توانید برای همیشه این درد انتظار را از کاربران Web Application دور کنید و با ارائه سرعت بالاتر حس رضایت و خوشحالی را به آنها منتقل کنید.


4-    Push Notification


با استفاده از Notification  می‌توانیم پیغام‌هایی برای کلاینت‌های مختلف از سمت سرور ارسال نماییم. برای ارسال notification  می‌توانیم از سرویس‌های third party  که مخصوص Push Notification ارائه شده‌اند استفاده کنیم و یا خودمان Push Notification  را پیاده‌سازی کنیم.
درهرصورت ارسال Notification باید در پشت‌صحنه Web Application انجام شود.


5-    Web Crawler


کار خزنده وب این است که url و یا urlهایی برای آن مشخص کنیم و برود اطلاعاتی که ما نیاز داریم را جمع‌آوری نمایید و بعد از پردازش در مکانی که برای آن مشخص می‌کنیم ذخیره نماید.
از نام خزنده وب می‌توان حدس زد که چقدر کار زمان‌بری است، حتی اگر قرار باشد فقط یک url با دیتای حداقلی را به دست بیاورد.
اگر در Web Application خود از خزنده وب استفاده می‌کنیم حتماً انجام این فرایند را در پس‌زمینه Application انجام دهید.


6-    استخراج داده‌ها


ممکن است بخواهید عملیات‌های مختلفی بر روی دیتاهای خود در Application انجام دهید که کار زمان‌بری باشد.
مثلاً فرض کنید به دلیل سرعت بسیار بالاتر دیتابیس Redis در درج اطلاعات جدید نسبت به SqlServer می‌خواهید دیتاهای ورودی به Application  را در Redis ثبت کنید (برای این که بتوانید هم‌زمان داده‌های بیشتری را ذخیره نمایید) و سپس همان داده‌ها را از Redis به Sql Server منتقل نمایید.
انتقال این داده‌ها باید در Background Task  انجام شود.


7-    پردازش‌های Big Data


امروزه کسب‌وکارهای اینترنتی با مفهومی به نام Big Data درگیر هستند. Big Data  به داده‌های بسیار زیادی که ساختاربندی شده یا نشده‌اند گفته می‌شود.  Big Data ممکن است حجم عظیمی از اطلاعات  با تنوع بالایی داشته باشد که با سرعت بسیار زیادی در حال رشد است.
پردازش این اطلاعات می‌تواند در تصمیم‌گیری کسب‌وکار تأثیرات مثبتی بگذارد و باعث رشد کسب‌وکار شود. شاید در کسب‌وکاری که مسئول توسعه Applicationهای آن هستید مجبور به پردازش‌های Big Data باشید، این نوع پردازش‌ها را باید در Background Task  انجام دهید.


8-    کارهای که باید طبق برنامه زمان‌بندی اجرا شوند


فرض کنید کسب‌وکاری که درحال‌توسعه Application  آن هستید قصد دارد آخرین جمعه هر ماه محصولات وب‌سایت را تخفیف ویژه به فروش برساند.
و شما نیاز دارید چند روز قبل از آخرین جمعه هر ماه در Aeb Application به‌صورت خودکار ایمیل‌ها و smsها برای مشتریان وب‌سایت ارسال نمایید

   •    مثلاً ۳ روز مانده به آخرین جمعه هر ماه ایمیل برای همه مشتریان ارسال شود و آنها را از فروش ویژه آخر ماه باخبر سازد.
   •    یک روز مانده به آخرین جمعه هر ماه sms برای همه مشتریان ارسال شود.
   •    آخرین جمعه هر ماه تخفیف‌ها بر روی سایت اعمال شود و بعد از فعال‌سازی sms و ایمیل برای همه کاربران ارسال شود.
   •    و در نهایت هم در ساعت ۲۳:۵۹:۵۹ آخرین جمعه هر ماه تخفیف‌ها را از روی وب‌سایت بردارد.

برای انجام همچون فرایندهایی باید حتماً از Background Task  و برنامه زمان‌بندی Cron استفاده نمایید.

9-    پردازش تصویر


در Application خود کارهای مختلفی با تصاویر می‌توانیم انجام دهیم. به‌عنوان‌مثال اگر درحال‌توسعه یک Application در حوزه حمل‌ونقل باشید نیاز دارید که از پردازش تصویر برای تشخیص پلاک خودرو استفاده نمایید و یا در Application دیگری نیاز به تشخیص چهره با پردازش تصویر دارید.

و یا حتی در ساده‌ترین حالت آن فرض کنید در وب‌سایتی که طراحی کرده‌اید کاربر قرار است یک تصویر از خود برای پروفایل خود آپلود کند و حالا شما در اکشن آپلود می‌خواهید  سه کارهای زیر را انجام دهید
   •    اندازه تصویر را تغییر دهید.
   •    با فشرد سازی تصویر آپلود شده حجم تصویر را تا 70% کاهش دهید.
   •    یک سایز ۵۰ * ۵۰ از تصویر اصلی برای thumbnail  ایجاد کنید.

شاید انجام این عملیات زمان‌بر باشد، و اگر در background Task  انجام نشود، کاربر مجبور است زمان زیادی منتظر انجام این عملیات شود. پس اگر از پردازش تصویر در application خود استفاده می‌کنید حتماً آن را در Background Task انجام دهید.


10-    ایجاد فایل‌ها در سمت سرور


گاهی نیاز داریم برای کاربران یک فایل از اطلاعات ایجاد کنیم، و یا می‌خواهیم گزارشی برای کاربر آماده کنیم که پردازش اطلاعات آن شاید بیش از ۱ دقیقه زمان ببرد.
به‌محض این که درخواست از سمت کاربر به backend رسید، نباید کاربر را منتظر آماده‌شدن گزارش یا ایجاد فایل بگذارید. باید در همان لحظه Response را برای کاربر ارسال نمایید و در پس‌زمینه به آن اطلاع دهید که Task در حال انجام است و منظر بمانید، به‌محض آماده‌شدن گزارش و یا ایجاد فایل از طریق Signalr  و ... به کاربر آماده می‌دهیم که Task آماده شد و اطلاعات را در اختیار او قرار می‌دهیم.
با این کار حس بسیار خوبی در کاربر Application  ایجاد کرده‌ایم.


11-    WebHooks


Webhook شبیه به ارسال notification  است و زمانی که در اپلیکیشن خود از webhook استفاده می‌کنید باید در زمان رخداد یک رویداد اطلاعاتی را به یک url ارسال کنید که این عملیات هم می‌تواند زمان‌بر باشد و باید آن را در پشت‌صحنه Application انجام دهیم.

 

چطور می‌توانیم Background Task  ایجاد کنیم؟


1-    Asp.Net Core


در Asp.Net Core  نسخه 2.0 IHostedService برای اجرای Taskهای پس‌زمینه ارائه شد و در نسخه‌های بعدی امکانات دیگری هم اضافه شد که با استفاده از کلاس Timer در کنار این ویژگی‌ها می‌توانیم Background Task  را در Asp.Net Core  ایجاد کنیم


2-    Hangfire


Hangfire ابزاری است که برای مدیریت و زمان‌بندی Jobها در DotNet  ارائه شده است. استفاده از Hangfire پیچیدگی بالایی ندارد و قابلیت توسعه و نگهداری بالایی دارد که همین دلایل باعث شده است در پروژه‌های زیادی از این ابزار استفاده شود.


3-    Quartz.NET


Quartz یک ابزار زمان‌بندی قوی است که برای زبان جاوا توسعه داده شده است و بعد از مدتی برای .Net هم با نام Quartz.Net  ارائه شد.
استفاده از Quartz.Net  نسبت به Hangfire پیچیده‌تر است و توسعه‌پذیری کمتری دارد اما با این‌حال در زمان‌بندی‌های بسیار پیچیده بهتر عمل می‌کند.


در این دوره چه خواهید آموخت؟


در دوره آموزش background Task در Asp.Net Core شما با Background Taskها آشنا می‌شوید و یاد خواهید گرفت چطور می‌توانید Taskهای خود را در پشت‌صحنه Application اجرا کنید.

فصل اول Background Task in .Net
بدون نیاز به هیچ ابزاری در Net. می‌توانیم background Taskها را ایجاد و اجرا کنیم و در فصل اول این دوره به شما یاد خواهیم داد چطور درNet. تسک‌های پس‌زمینه ایجاد کنید و در پشت‌صحنه Application آنها را اجرا کنید.
فصل دوم آموزش Hangfire
با وجود این که خود Net. به ما امکان ایجاد و اجرای تسک‌های پس‌زمینه را می‌دهد، اما برای به‌دست‌آوردن امکانات بیشتر می‌توانیم از hangfire برای مدیریت و اجرای background Taskها استفاده کنیم.
در فصل دوم به آموزش کامل Hangfire می‌پردازیم و بعد از فصل دوم شما می‌توانید background Taskهای  مختلفی با hangfire ایجاد و اجرا کنید و نحوه  Tracking  انجام کارها را به شما آموزش می‌دهیم که بتوانید UX بهتری با پیگیری انجام کار و نمایش آن به کاربر ارائه دهید.


 
گاهی دیدن چند ساعت آموزش می‌تواند تأثیر قابل‌توجهی در روند کاری ما ایجاد کند. قدرت واقعی یک برنامه‌نویس به دانشی است که دارد و هرچه این دانش بیشتر باشد و از دانش بتوانید به‌خوبی استفاده نماید، قدرت برنامه‌نویس هم بیشتر می‌شود.
با شرکت در این دوره به‌صورت کامل به background Taskها مسلط می‌شوید و قدرت شما برای انجام پروژه‌های بزرگ‌تر و پیچیده‌تر بیشتر می‌شود.

 



نگاهی به دوره Background Tasks در Asp.Net Core
مدرس احسان بابائی
مخاطب برنامه‌نویسان
فصل 2‌
مدت زمان 07:30:03
سطح پیشرفته
وضعیت به اتمام رسیده ✅
تعداد جلسات 34
فرمت فیلم محافظت‌شده (مشاهده آنلاین در پلیر مخصوص)
قابل مشاهده در دو سیستم ویندوز یا اندروید
قیمت 1,960,000 تومان
سرفصل‌های دوره Background Tasks در Asp.Net Core

فصل 1 : BackgroundTask in DotNet

فصل 2 : آموزشHangfire

برای ارسال دیدگاه، لطفاً وارد حساب کاربری خود شوید.

24 دیدگاه برای Background Tasks در Asp.Net Core
آرمان (خریدار محصول)
1402/06/10

فایل های سورس کد پروژه رو از کجا میشه دانلود کرد؟

پاسخ توسط احسان بابائی
1402/06/10

بعد از لاگین 

وارد همین صفحه بشوید 

در لیست قسمت ها هر قسمتی که سورس داشته باشید دکمه سبز رنگ دانلود سورس را می‌بینید.


حسن غویشه (خریدار محصول)
1402/03/28

درود وقت بخیر

 

لینک های دانلود مشکل داره

 

ی بارم که داشت دانلود میکرد آخراش خطا داد :|

 

لطفا بررسی نمایید

پاسخ توسط پشتیبانی باگتو
1402/03/28

  سلام،
فیلم‌های دوره که از طریق اسپات پلیر قابل دانلود و مشاهده هستند.
اگر منظور شما دانلود سورس کدها بود، امروز برای چند لحظه مشکلی در سرور دانلود رخ داد که احتمالا شما نیز در همان زمان با این مشکل مواجه شده‌اید.
از اینکه این موضوع را به ما اطلاع دادید، سپاسگزارم.


رضا ساغری (خریدار محصول)
1402/02/06

درود و ادب

آیا در این دوره نحوه ایجاد یک task از طریق کد نویسی در hangfire رو هم آموزش میدید؟

ضمنا آیا امکانش هست که لیست عنوان قسمت های دوره را برام ایمیل کنید یا به اطلاعات دوره اضافه کنید تا بتونم ببینم که اگر برام مفید است خریداری کنم.

سپاس فراوان

پاسخ توسط پشتیبانی باگتو
1402/02/06

درود بر شما،

در این دوره، تقریبا تمامی موارد مورد نیاز برای کار با ابزار Hangfire آموزش داده شده است.


اشکان تست (خریدار محصول)
1401/09/10

با سلام

در توضیحات دوره اشاره شده است که سورس کد دارد. از کجا میتونم دسترسی به سورس کد دوره داشته باشم؟

پاسخ توسط پشتیبانی باگتو
1401/09/11

سلام

در صفحه دوره، بعد از لاگین ، کنار هر ویدئو یک دکمه سبز رنگ برای دانلود سورس قرار دارد.

هر قسمتی که سورس داشته باشد بر روی دکمه دانلود کلیک نمایید سورس آن قسمت دانلود می شود.

دانلود سورس


محمد رمضانی (خریدار محصول)
1401/08/20

سلام استاد وقت بخیر آموزش خوبی بود فقط من میخواستم از هنگ فایر برای پروژه web api استفاده کنم برای پابلیش روی سرور باید کار خاصی انجام دهم یا نیازی نیست و مانند لوکال درست اجرا میشود

پاسخ توسط پشتیبانی باگتو
1401/08/20

سلام

نیاز به کار خاصی نیست. بعد از پاپلیش و تنظیم کانفیگ ها می تونید بر روی سرور هم از این پکیج استفاده نمایید


pourya
1401/04/14

بجای این نمیتونم از parallel استفاده کنیم ؟ 

پاسخ توسط پشتیبانی باگتو
1401/04/18

خیر،

paraller مبحث جداگانه ای است که در دوره ستارگان سی شارپ آموزش داده می شود.


parastoo (خریدار محصول)
1401/04/14

سلام 

ببخشید این دوره برای کسانی که asp.net mvc c# کتر می کنن هم مفیده یا فقط برای دانت coreهستش؟؟؟

ممنون

پاسخ توسط پشتیبانی باگتو
1401/04/14

سلام

تسک های پس زمینه در انواع مختلف پروژه های دات نت می توانید استفاده نمایید.

hangfire هم در .Net Freamwork قابل استفاده می باشد.

اما در این دوره ما مباحث را در Asp.Net Core  پیاده سازی می کنیم.

برای شما هم می تواند مفید باشد. 


هادی رکن آبادی (خریدار محصول)
1401/03/20

سلام

جناب بابائی چطور میتونیم از پنل hangfire داخل قالب اختصاصی خودمون استفاده کنیم ؟

من برای پنل ادمینم از قالب Beyond Admin استفاده میکنم میخوام پنل داخل این layout نمایش داده بشه

پاسخ توسط احسان بابائی
1401/03/22

سلام

در nuget به دنبال پکیج هایی که داشبورد هنگ فایر را اختصاصی می کنند بگردید. اکثر این پکیج ها اوپن سورس هستند و سورس آنها را بررسی کنید ببینم به چه صورت این کار را انجام داده اند

و از آنها برای کار خودتان الگوبرداری نمایید


هادی رکن آبادی (خریدار محصول)
1401/03/19

سلام

جناب بابائی متدی که میخوایم در پس زمینه اچرا بشه دیگه نباید async task باشه درسته ؟

پاسخ توسط احسان بابائی
1401/03/19

سلام متدهای Async هم می توانند به عنوان job در Hangfire استفاده شوند.

_backgroungJobClient.Enqueue(() => _emailService.SendAsync(data));

این که استفاده از Async برای شما آورده ای دارد یا نه؟ ابتدا باید تسلط کاملی بر Asynchrony  داشته باشید و سناریو خود را بررسی کنید.


محمد سجاد بیغرض (خریدار محصول)
1401/03/06

سلام این دوره برای برنامه نویس های ویندوز هم مناسب هست؟ یعنی میشه برای wpf هم استفاده کرد؟

پاسخ توسط احسان بابائی
1401/03/06

سلام

بله ، در انواع مختلف پروژه هاي دات نت مي تولنيم از تسك هاي پس زمينه استفاده كنيم.

اما برخي از مطالب دوره مناسب شما نيست و مخصوص web مي باشد


Mohammad Dastyar
1401/03/04

با سلام
آیا می توان با استفاده از این تکنیک یک متد یا api را در زمان های تعریف شده فراخوانی کرد؟

 

پاسخ توسط احسان بابائی
1401/03/04

سلام 

بله ، مي توانيد كار مورد نظر را در يك متد بنويسيد و آن متد را در job هاي hangfire استفاده كنيد. 

هر كدي از جمله فراخواني متد ها و api ها و... را ميتوان در زمانبندي تعريف كرد


محمد رمضانی (خریدار محصول)
1401/03/04

یک دوره بی نظیر و فوق کاربردی دوستانی که به صورت حرفه ای برنامه نویسی میکنند توصیه میکنم این آموزش رو از دست ندید


reza (خریدار محصول)
1401/03/02

سلام اگه میشه یه دوره DDD هم بزارید,ممنون واسه دوره های خوبتون