6c9b

آموزش استفاده از HttpClientFactory در asp core

کدسل برنامه نویسی وب Asp.Net Core

لینک کوتاه https://codecell.ir/course/6c9b
مدرس: سهراب قیصری
تعداد ویدیوها: 1
مدت زمان دوره: 00:29:21
وضعیت دوره: به اتمام رسیده
آخرین بروزرسانی: 1401/06/17
به اشتراک گذاری
نظرات
3
دیگر آموزش های مدرس:
آموزش استفاده از HttpClientFactory در asp core

در asp core برای ایجاد درخواست های Http و مدیریت Responseهای وب می توان از HttpClient و IHttpClientFactory استفاده کرد.

Httpclient چیست؟

HttpClient کلاسی است که می تواند برای ایجاد درخواست های HTTP و مدیریت پاسخ های HTTP از منابع وب شناسایی شده توسط Uri در دات نت استفاده کرد. HttpClient در .NET Framework 4.5 (که در سال 2012 منتشر شد) معرفی شد و در NET Core و NET 5+ نیز موجود است. کلاس اصلی و شناخته شده HttpClient را می توان به راحتی استفاده کرد، اما در برخی موارد، بسیاری از توسعه دهندگان از آن به درستی استفاده نمی کنند.

دو روشی که معمولاً از HttpClient استفاده می شود به شرح زیر می باشد:

  • ایجاد یک HttpClient جدید برای هر درخواست
  • استفاده از یک HttpClient برای همه درخواست ها

مشکل ایجاد یک HttpClient برای هر درخواست، این است که یک سربار نمونه سازی وجود دارد، اگر چه این کلاس IDisposable را پیاده‌سازی می‌ کند، اما نمونه‌ سازی آن در یک عبارت using ترجیح داده نمی‌ شود، زیرا وقتی شی HttpClient از بین می‌ رود، سوکت بلافاصله آزاد نمی‌شود و این موضوع می‌ تواند منجر به مشکل socket exhaustion شود و در صورتی که حجم بالایی از درخواست‌ ها را ارسال کرده باشیم، با خطای SocketException مواجه می شویم (این خطا زمانی رخ می دهد که یک HttpClient جدید نمی ‌تواند سوکتی را برای ارسال درخواست دریافت کند).

یک رویکرد بهتر برای استفاده از HttpClient نسبت به رویکرد اول این است که به جای اینکه از یک HttpClient استفاده کنیم، شی HttpClient خود را به صورت Singletone یا static ایجاد کنیم، به این ترتیب یک نمونه singletone از HttpClient برای یک endpoint معین خواهیم داشت. اما حتی با این رویکرد، بهتر است رفتار connection pooling را از طریق PooledConnectionLifetime پیکربندی کنیم(مدت زمانی که یک اتصال می‌تواند مجددا قابل استفاده در نظر گرفته شود را دریافت و تنظیم می‌ کند).

این رویکرد می تواند راه حل خوبی برای برنامه های کوتاه مدت که چند بار در روز اجرا می شوند باشد.

مشکل استفاده از HttpClient  به صورت Singletone یا static این است که در فرآیند های طولانی مدت نمی تواند تغییرات DNS را مدیریت کند. با این حال، مشکل واقعاً به خودی خود مربوط به HttpClient نیست، بلکه مربوط به سازنده پیش‌فرض HttpClient است، زیرا یک نمونه جدید از HttpMessageHandler ایجاد می‌کند، که دارای مشکلات socket exhaustion و تغییرات DNS که در بالا ذکر شد می باشد.

دات نت برای حل مشکلات استفاده از HttpClient  اینترفیس IHttpClientFactory را معرفی کرد.

IHttpClientFactory چیست؟

IHttpClientFactory در .NET Core 2.1 (همچنین در NET 5+ موجود است) معرفی شد و رویکرد بسیار بهبود یافته ای را برای HTTPClient ارائه می دهد. IHttpClientFactory می تواند به راحتی از میان افزارهای شخص ثالث انعطاف پذیر و گذرا (transient-fault-handling) استفاده کند.

IHttpClientFactory می تواند برای پیکربندی و ایجاد نمونه های HttpClient در یک برنامه از طریق Dependency Injection (DI) استفاده شود. همچنین افزونه‌ هایی را برای میان‌ افزار مبتنی بر Polly فراهم می‌کند تا از مزیت واگذاری کنترل‌ کننده‌ ها در HttpClient استفاده کند.

IHttpClientFactory هر دو مشکلی ذکر شده در HttpClient را حل می کند و این کار با ادغام HttpClientHandler (که بیشتر کارهای HttpClient را انجام می دهد) و همچنین حذف HttpClientHandler ها پس از یک دوره مشخص انجام می شود. هنگامی که یک HttpClientHandler جدید برای یک endpoint ایجاد می شود، جستجوی DNS انجام می شود، با این کار سوکت ها فرسوده نمی شوند و یک آدرس IP جدید برای هر endpoint دریافت خواهد شد.

مزایای استفاده از IHttpClientFactory در asp core  چیست؟

  • کلاس HttpClient را به عنوان نوع آماده DI ارائه می دهد
  • یک مکان مرکزی برای نامگذاری و پیکربندی نمونه های منطقی HttpClient فراهم می کند
  • به خوبی با کتابخانه Polly ادغام می شود
  • با مدیریت طول عمر HttpClientHandler از مشکلات رایج DNS جلوگیری می کند

ما در این دوره به آموزش استفاده از HttpClient و IHttpClientFactory در asp core خواهیم پرداخت و مزایا و معایب آن را بررسی خواهیم کرد.

دریافت سورس پروژه آموزش استفاده از HttpClient و IHttpClientFactory در asp core

فهرست ویدیوها
مدت زمان دوره: 00:29:21
01

آموزش استفاده از HttpClient و HttpClientFactory در Asp Core

00:29:21

پرسش های متداول

HttpClient یک شیء قابل تغییر است، اما تا زمانی که آن را تغییر ندهیم، در واقع thread safe است و می توان آن را به اشتراک گذاشت.

HttpClientFactory یک متد CreateClient دارد که شی HttpClient را برمی گرداند. اما در واقعیت، HttpClient فقط یک پوشش برای HttpMessageHandler است. HttpClientFactory طول عمر HttpMessageHandelr را مدیریت می کند، که در واقع یک HttpClientHandler است که کار واقعی را انجام می دهد.

نیازی به dispose کردن نمونه های HttpClient از طریق HttpClientFactory نیست. Disposal در این مورد عملاً کاری انجام نمی دهد زیرا factory طول عمر هندلر و اتصال را مدیریت می کند و نه نمونه های HttpClient.

به طور کلی، نباید HttpClient را dispose کنیم، مگر اینکه به ندرت از آن استفاده شود. ایجاد و dispose کردن منظم HttpClient ممکن است منجر به socket exhaustion شود

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

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

671 0 1402/10/22

Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.

723 0 1402/10/14

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

686 2 1402/10/01

ViewComponent در ASP.NET Core

در ASP.NET Core با استفاده از ViewComponent ها می توان اجزای ماژولار، قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر برای ساخت برنامه های کاربردی وب ایجاد کرد. در این مقاله به نحوه ایجاد و فراخوانی ViewComponent در Asp.net core پرداخته ایم.

1٬432 2 1402/05/15

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

881 1 1402/04/05

تزریق وابستگی در ASP.NET Core

تزریق وابستگی (DI) یک الگوی طراحی نرم افزاری است که امکان ایجاد برنامه های کاربردی و ماژولار را فراهم می کند.. در .NET Core تزریق وابستگی یا Dependency injection یک ویژگی مهم است که می تواند برای ساده سازی توسعه برنامه، بهبود تست پذیری و کاهش پیچیدگی کد مورد استفاده قرار گیرد.

1٬965 1 1402/02/04

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬518 1 1401/12/29

الگوی طراحی Factory در سی شارپ

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. Factory Method یک الگوی طراحی ایجادی است که یک رابط برای ایجاد اشیاء در یک سوپر کلاس فراهم می‌کند. ما در این مقاله الگوی Factory Method Design در سی شارپ را بررسی می کنیم.

1٬643 1 1401/10/28

مقایسه List و Array در سی شارپ

آرایه و لیست در سی شارپ هر دو به عنوان مجموعه ای از مقادیر عمل می کنند، اما در نحوه ذخیره محتوای خود در حافظه و نحوه دسترسی به آنها متفاوت هستند. در این مقاله Benchmark و کارایی List<T> با سایز داینامیک، List<T> با سایز ثابت و Array ها را بررسی می کنیم.

2٬222 2 1401/09/01

LinkedList در سی شارپ

LinkedList یا لیست پیوندی در سی شارپ یک ساختار داده خطی است که عنصر را در مکان غیر پیوسته ذخیره می کند. LinkedList شامل گره هایی است که هر گره حاوی یک فیلد داده و یک مرجع (پیوند) به گره بعدی در لیست است. در سی شارپ، LinkedList یا لیست پیوندی یک نوع مجموعه جنریک است.

2٬047 0 1401/08/13

Garbage Collection در دات نت

به طور کلی، Garbage Collection (GC) یا جمع آوری زباله در .Net چیزی نیست جز به دست آوردن مجدد حافظه اختصاص داده شده به اشیایی که در حال حاضر در هیچ بخشی از برنامه ما استفاده نمی شوند. ما در این مقاله Garbage Collection را در سی شارپ بررسی خواهیم کرد.

2٬840 5 1401/03/30

.NET Core چیست؟

.Net (با تلفظ «دات نت») یک چارچوب نرم افزاری کامپیوتری مدیریت شده رایگان و منبع باز برای سیستم عامل های ویندوز، لینوکس و macOS است. این پروژه در درجه اول توسط کارمندان مایکروسافت از طریق دات نت توسعه یافته و تحت مجوز MIT منتشر شده است.

2٬588 2 1401/03/16

پشته(Stack) در سی شارپ

پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.

2٬188 0 1401/03/09

صف (Queue) در سی شارپ

صف (Queue) در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.

2٬162 0 1401/02/30

تفاوت Hashtable و Dictionary در سی شارپ

در سی شارپ از Hashtable و Dictionary می توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. با این تفاوت که Hashtable و Dictionary عناصر را به عنوان جفت Key/Value ذخیره می کنند.در این مقاله به تفاوت های Hashtable و Dictionary پرداخته شده است.

1٬843 1 1401/02/23

Dictionary در سی شارپ

در سی شارپ از دیکشنری ها (Dictionary) می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Dictionary می تواند عناصر را به عنوان جفت Key/Value ذخیره کند.Key ها باید منحصر به فرد و نمی توانند null باشند. Value ها می توانند تکراری یا null باشند.

2٬249 3 1401/02/17

Hashtable در سی شارپ

از Hashtable می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Hashtable می تواند عناصر را به عنوان جفت Key/Value به عنوان جایگزینی برای استفاده از Index ذخیره کند.

1٬721 5 1401/02/14

Redirect درخواست (ریدایرکت) در asp.net core

در برنامه های ASP.NET Core برای تغییر مسیر(ریدایرکت) و Redirect به یک URL خاص روش های مختلفی وجود دارد. در این مقاله با این تکنیک ها و کدهای مورد نیاز برای تغییر مسیر یک درخواست در ASP.NET Core آشنا می شویم.

2٬563 5 1401/02/12

تبدیل enum به لیست انتخابی در asp.net core

در این آموزش ما بوسیله Reflection ها در سی شارپ و asp.net core یک enum را به لیست انتخابی یا SelectListItem تبدیل خواهیم کرد و بوسیله تگ select در بوت استرپ 5 نمایش می دهیم.

1٬753 3 1401/02/03

نحوه ارسال ایمیل در asp و c#

امروزه ارسال ایمیل به امری ضروری در پروژه های وب تبدیل شده است.از ارسال ایمیل در asp می توان در بخش های تایید حساب کاربری،بازیابی رمز عبور،ایمیل مارکتینگ،ارسال خبرنامه و ... استفاده نمود.در این آموزش نحوه ارسال ایمیل در asp core و سی شارپ پیاده سازی گردیده است.

2٬582 5 1401/02/03
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید