
آموزش ساختن Background Service ها در ASP.NET Core 6 و .NET 6
آموزش ساختن Background Service ها در ASP.NET Core 6 و NET 6. یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش ایجاد کردن Background Service ها در ASP.NET Core 6 و NET 6. است که با نام اصلی Creating Background Services in ASP.NET Core 6 and .NET 6 از شرکت Pluralsight منتشر شده است.
Minimal API چیست؟
Minimal API در ASP.NET Core یک رویکرد ساده و کم حجم برای ساخت وبسرویسها است که با استفاده از آن میتوان بدون نیاز به تنظیمات پیچیده و کد بیشتر، API هایی ساده و کارآمد را پیادهسازی کرد. این رویکرد جدید در نسخههای جدید ASP.NET Core معرفی شده است و به توسعهدهندگان امکان میدهد با کد کمتر، سرعت بیشتر و عملکرد بهتری برای وبسرویسهای خود بدست آورند. با Minimal API میتوان به راحتی روتها، مدلها و عملیات مربوط به API را تعریف کرده و برای ارتباط با دیگر سرویسها و پایگاهدادهها از ویژگیها و توابع موجود در ASP.NET Core استفاده کرد. این رویکرد ساده و مفیدی برای پیادهسازی وبسرویسهای کوچک و ساده است که نیاز به پیچیدگیهای بیشتری ندارند و امکان پیشرفتهتر شدن و رشد به صورت پیوسته در آینده را فراهم میکند.
تفاوت Minimal API با Web API های معمولی در چیست؟
تفاوت اصلی بین Minimal API و Web API های معمولی در ASP.NET Core در رویکرد و نحوه پیادهسازی آنها است. در حالی که Web API های معمولی بر اساس کنترلرها و اکشنها ساختاردهی میشوند، Minimal API از یک روش ساده و مینیمال برای تعریف و پیادهسازی API استفاده میکند. در Minimal API، کد بیشتر و تعداد کنترلرها و اکشنها کاهش مییابد و به جای آن از یک روش ساده تر و مرکزی برای تعریف روتها و عملیات API استفاده میشود. این رویکرد سبب میشود که کد نوشته شده در Minimal API کمتر و سادهتر باشد و طراحی و پیادهسازی API ها را سریعتر و آسانتر کند. همچنین، با استفاده از Minimal API میتوان به راحتی از ویژگیها و توابع موجود در ASP.NET Core برای اموری مانند مدیریت استثناها، امنیت و مستندسازی استفاده کرد. به طور کلی، Minimal API یک راه ساده و کارآمد برای ساخت وبسرویسهای ساده و کوچک است که نیاز به پیچیدگی و کد بیشتری ندارند.
توسعه دادن Minimal API در ASP.NET Core
توسعه دادن Minimal API در ASP.NET Core یک فرآیند ساده و آسان است که با استفاده از ابزارها و قابلیتهای ASP.NET Core میسر میشود. برای شروع، میتوان از دستورالعملها و الگوهای موجود در ASP.NET Core استفاده کرد و یک پروژه جدید با استفاده از قالب Minimal API ایجاد کرد. سپس میتوان با تعریف روتها، عملیات و پارامترهای API خود، API را شخصیسازی کرد. همچنین، میتوان از امکانات ASP.NET Core مانند مدیریت استثناها، امنیت و مستندسازی برای بهبود عملکرد و کیفیت API استفاده کرد.

با استفاده از ابزارهای تست و اشتراکگذاری مانند Postman میتوان API را تست و اعتبارسنجی کرده و در محیط توسعه و برنامهریزی، API را بهبود داد. به طور کلی، توسعه دادن Minimal API در ASP.NET Core به توسعهدهندگان اجازه میدهد تا با استفاده از روشهای ساده و کارآمد، وبسرویسهای ساده و کوچک را بسازند و در عین حال از قابلیتها و امکانات ASP.NET Core بهرهبرداری کنند.
Background Service در .NET 6 چیست و چه زمانی به آن نیاز داریم؟
در بسیاری از برنامهها، همه عملیات نباید مستقیماً در پاسخ به درخواست کاربر انجام شوند. بعضی کارها مانند پردازش دورهای اطلاعات، پاکسازی دادههای قدیمی یا اجرای وظایف زمانبر بهتر است در پسزمینه انجام شوند. Background Service در ASP.NET Core و .NET 6 امکان اجرای چنین کارهایی را در قالب سرویسهای میزبانیشده فراهم میکند. برای مثال، یک برنامه میتواند بهصورت منظم اطلاعات مشخصی را بررسی کند یا وظایف داخلی خود را بدون نیاز به دریافت درخواست جدید از کاربر اجرا کند.
اجرای کارها در پسزمینه میتواند به جداسازی وظایف داخلی از مسیرهای اصلی پردازش درخواست کمک کند. با این حال، Background Service بهخودیخود یک سیستم صف توزیعشده یا زمانبند پیشرفته نیست و امکانات آن باید متناسب با نیاز برنامه استفاده شوند. هنگام طراحی این سرویسها، لازم است چرخه عمر سرویس، نحوه توقف برنامه و مدیریت خطاها را در نظر بگیرید. این موارد بهویژه زمانی اهمیت دارند که وظایف پسزمینه بخشی از عملکرد اصلی یک سامانه باشند.
تفاوت BackgroundService و IHostedService در ASP.NET Core
در ASP.NET Core، رابط IHostedService قرارداد اصلی برای سرویسهایی است که باید همراه با میزبان برنامه شروع و متوقف شوند. کلاس BackgroundService یک پیادهسازی پایه از این قرارداد ارائه میکند و برای ساخت سرویسهایی که عملیات طولانیمدت یا حلقههای پردازشی دارند، مناسب است. برای مثال، اگر بخواهید یک وظیفه بهصورت پیوسته اجرا شود و در فاصلههای مشخص وضعیت دادهها را بررسی کند، میتوانید از BackgroundService استفاده کنید و منطق اجرای کار را در متد مناسب آن قرار دهید.

انتخاب میان پیادهسازی مستقیم IHostedService و استفاده از BackgroundService به شکل کار موردنظر بستگی دارد. اگر نیاز دارید رفتار شروع و توقف سرویس را با جزئیات بیشتری کنترل کنید، پیادهسازی مستقیم رابط میتواند مناسب باشد. در مقابل، BackgroundService بخشهایی از مدیریت چرخه اجرای یک وظیفه را ساده میکند. در هر دو حالت، باید به لغو عملیات هنگام خاموش شدن برنامه و آزادسازی صحیح منابع توجه کنید. شناخت این تفاوتها به شما کمک میکند سرویس پسزمینه را با ساختاری متناسب با مسئولیت آن طراحی کنید.
مدیریت خطا و چرخه عمر سرویسهای پسزمینه
سرویسهای پسزمینه ممکن است برای مدت طولانی اجرا شوند و در این مدت با خطاهای موقتی، مشکلات اتصال یا شرایط غیرمنتظره روبهرو شوند. اگر این خطاها بهدرستی مدیریت نشوند، ممکن است بخشی از پردازش موردنیاز برنامه متوقف شود یا تشخیص مشکل دشوارتر گردد. استفاده از Logging برای ثبت وضعیت اجرا و خطاها به توسعهدهندگان کمک میکند رفتار سرویس را بررسی کنند. همچنین باید مشخص باشد که پس از بروز خطا، سرویس باید متوقف شود، دوباره تلاش کند یا به شکل دیگری به کار ادامه دهد.
چرخه عمر سرویس نیز باید در طراحی در نظر گرفته شود. وقتی میزبان برنامه متوقف میشود، عملیات پسزمینه باید به شکل کنترلشده خاتمه پیدا کنند و منابع مورد استفاده آزاد شوند. استفاده درست از CancellationToken به سرویس اجازه میدهد درخواست توقف را دریافت کند و پردازش جاری را تا حد امکان به شکل مناسب پایان دهد. اگر سرویس به پایگاه داده یا سرویسهای دیگر وابسته است، نحوه ایجاد و مدیریت وابستگیها نیز اهمیت دارد. این ملاحظات به قابلاعتمادتر شدن سرویسها در محیطهای واقعی کمک میکنند.
اجرای Background Service در محیط Production
اجرای یک Background Service روی سیستم توسعه با اجرای آن در محیط Production تفاوتهایی دارد. در محیط واقعی، سرویس باید در کنار سایر اجزای برنامه بهدرستی اجرا شود و رفتار آن هنگام راهاندازی مجدد، توقف برنامه یا بروز خطا قابلپیشبینی باشد. برای مثال، اگر یک سرویس مسئول بررسی دورهای اطلاعات است، باید بتوان وضعیت اجرای آن را از طریق گزارشها بررسی کرد و در صورت نیاز، علت انجام نشدن یک عملیات را تشخیص داد. ثبت مناسب رخدادها و مدیریت خطاها در این شرایط اهمیت زیادی دارد.
همچنین باید به منابع مصرفی و وابستگیهای سرویس توجه کرد. عملیات طولانی یا حلقههای پردازشی بدون کنترل مناسب میتوانند مصرف CPU و حافظه را افزایش دهند. اگر سرویس با پایگاه داده کار میکند، مدیریت طول عمر وابستگیها و جلوگیری از نگهداری غیرضروری منابع اهمیت دارد. در سامانههایی که وظایف پسزمینه حساس یا حیاتی هستند، باید احتمال اجرای مجدد یک کار و پیامدهای آن نیز بررسی شود. طراحی مناسب و آزمایش رفتار سرویس در شرایط مختلف کمک میکند اجرای آن در محیط Production پایدارتر و قابلمدیریتتر باشد.
سرفصل مطالب آموزش ویدئویی ساختن Background Service ها در ASP.NET Core 6 و NET 6.
فصل اول: مقدمه این دوره آموزشی- مقدمه این دوره آموزشی
- مقدمه
- معرفی اپلیکیشن Tennis Booking
- ایجاد یک سرویس میزبان
- بررسی سرویسهای میزبانی شده
- هماهنگ سازی بین Request ها و سرویسهای میزبانی شده
- پردازش پیامها از یک کانال در سرویسهای میزبانی شده
- جمع بندی
- مقدمه
- بررسی Worker Service
- ایجاد یک Worker Service
- بررسی میزبانی در .NET
- بررسی معماری Worker Service
- راهاندازی کردن AWS
- راهاندازی کردن Localstack
- خواندن از یک صف
- پردازش پیامها از یک کانال
- ریفکتورینگ وب اپلیکیشن
- جمع بندی
- مقدمه
- جزئیات اجرای BackgroundService
- مدیریت استثناها در سرویسهای میزبانی شده
- مدیریت خاتمه برنامه
- ترتیب ثبت سرویسهای میزبانی شده
- ایجاد کردن Background Services Aspnetcore 6 و Dotnet 6
- بازنویسی StartAsync و StopAsync در Background Services
- بررسی Unit Testing در Worker Services
- اجتناب از Blocking Code در StartAsync
- جمع بندی
- مقدمه
- مقدمهای بر Docker
- اجرای Worker Services به عنوان Container ها
- اجرای Worker Services به عنوان سرویسهای ویندوز
- انجام Worker Services به عنوان Linux Daemons
- اجرای Worker Services در Azure App Service
- جمع بندی



