590,000 تومان


احسان بابائی
احسان بابائی
BackEnd , DotNet ,Angular
دسته‌بندی‌ها
برنامه نویسی وب-Asp.net core
نظرات 16

لطفا جهت اطلاع از دوره های جدید و بروز رسانی دوره ها عضو کانال تلگرام باگتو با آدرس bugeto@ شوید .

بررسی اجمالی

  • فصل 2
  • قسمت 34
  • مدت زمان 07:30:03
  • سطح پیشرفته
  • وضعیت به اتمام رسیده
  • سورس کد دارد
  • نحوه مشاهده SpotPlayer

دوره 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ها مسلط می‌شوید و قدرت شما برای انجام پروژه‌های بزرگ‌تر و پیچیده‌تر بیشتر می‌شود.

با هر خرید می توانید بر روی دو دستگاه دوره را مشاهده نمایید

 

دانلود ویدیوها

آیا این دوره پشتیبانی هم دارد؟
اگر منظورتان از پشتیبانی پاسخ دادن به سوالات شخصی و موردی شما است، خیر! پشتیبانی ندارد! برای گرفتن مشاوره اختصاصی از باگتو، در سال حداقل لازم است چندصد میلیون تومان بپردازید.
البته مشکلات فنی خود را می توانید در قسمت باگ سایت ارسال نمایید، دیگر کاربران و یا پشتیبانی باگتو پاسخ سوال شما را ارسال می کنند.

اشتراک

برای ارسال نظر وارد حساب کاربری خود شوید
ورود به حساب کاربری ثبت نام




نظرات 16

  • عکس پروفایل pourya در سایت باگتو
  • |
  • ارسال شده توسط : pourya
  • |
  • زمان : 1401/04/14

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

خیر،

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


  • عکس پروفایل parastoo در سایت باگتو
  • |
  • ارسال شده توسط : parastoo
  • |
  • زمان : 1401/04/14

سلام 

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

ممنون

سلام

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

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

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

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


  • عکس پروفایل هادی رکن آبادی در سایت باگتو
  • |
  • ارسال شده توسط : هادی رکن آبادی
  • |
  • زمان : 1401/03/20

سلام

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

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

سلام

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

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


  • عکس پروفایل هادی رکن آبادی در سایت باگتو
  • |
  • ارسال شده توسط : هادی رکن آبادی
  • |
  • زمان : 1401/03/19

سلام

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

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

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

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


  • عکس پروفایل محمد سجاد بیغرض در سایت باگتو
  • |
  • ارسال شده توسط : محمد سجاد بیغرض
  • |
  • زمان : 1401/03/06

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

سلام

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

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


  • عکس پروفایل Mohammad Dastyar در سایت باگتو
  • |
  • ارسال شده توسط : Mohammad Dastyar
  • |
  • زمان : 1401/03/04

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

 

سلام 

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

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


  • عکس پروفایل محمد رمضانی در سایت باگتو
  • |
  • ارسال شده توسط : محمد رمضانی
  • |
  • زمان : 1401/03/04

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


  • عکس پروفایل reza در سایت باگتو
  • |
  • ارسال شده توسط : reza
  • |
  • زمان : 1401/03/02

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