TGViewer
DotNet | دات نت DotNet | دات نت @dotnetcode · 1.21K subscribers
Post #785 154
❇️ خواهشا از HttpClient درست استفاده کنیم! (قسمت دوم)

در قسمت قبل روش های کار با Http و مزایا و معایب هرکدام را بررسی کردیم و به نکات و Best Practice های استفاده از HttpClient پرداختیم
در این قسمت میخواهیم بهترین روش استفاده از آن را بررسی کنیم

اصولی ترین و بهینه ترین حالت استفاده از HttpClient، استفاده از کلاس HttpClientFactory موجود در NET Core 2.1. به بعد است

این کلاس وهله سازی HttpClient و Dispose کردن آن را به صورت خودکار و استاندارد به عهده میگیرد و توسط مکانیزم Pooling (استخری از HttpClient ها) وهله های ایجاد شده را مجددا برای درخواست های بعدی استفاده می کند

بدین ترتیب HttpClientFactory از HttpClient های خود، به بهینه ترین نحو استفاده‌ی مجدد می‌کند و همچنین سربار ایجاد HttpClient‌های جدید نیز به حداقل می‌رسند.

در این روش دیگر مشکل نشتی حافظه یا کمبود منابع ناشی از Dispose نشدن HttpClient ها را نخواهیم داشت زیرا Lifetime وهله ها توسط HttpClientFactory مدیریت می شود
همچنین دیگر مشکل sockets exhaustion (اشباع سوکت های باز) و آگاه نشدن از تغییرات DNS را نخواهیم داشت

برای استفاده از این کلاس 4 روش موجود است
Basic usage
Named clients
Typed clients
Generated clients

روش Basic روش ساده و معمول آن است ولی معمولا در پروژه ها لازم است یک سری کانفیگ خاص را برای هر HttpClient تنظیم کنیم
مثلا HttpClient ایی که قرار است به سایت A درخواست بزند BaseAddress و Timeout و DefaultRequestHeaders (هدرهای پیشفرض) خود را دارد

از انجایی که این پروپرتی ها thread-safe نیستند بهترین راه استفاده از روش های Named clients و Typed clients است
نکته و محدودیت ای که در ورش Typed clients وجود دارد اینست که کلاس استفاده کننده از آن HttpClient الزاما به صورت Transient رجیستر میشود که باید مد نظر داشت و در صورت نیاز از روش Named clients یا ترفند های دیگر استفاده کرد.

روش Generated clients هم مخصوص استفاده از HttpClient توسط کتابخانه های third-party مانند Refit (که در قسمت قبل بررسی کردیم) است

برای یادگرفتن روش صحیح استفاده از HttpClient پیشنهاد میکنم حتما این 3 مقاله را بخوانید
https://www.dotnettips.info/post/2801
https://www.dotnettips.info/post/3022

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.2


#PerformanceTuning #HttpClient
____________
Docs Make HTTP requests using IHttpClientFactory in ASP.NET Core Learn about using the IHttpClientFactory interface to manage logical HttpClient instances in ASP.NET Core.
More from @dotnetcode
  1. Sep 16, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  2. Jul 10, 2026#مهندس_فکر_کن قسمت:4️⃣ 🎯مصاحبه‌کننده: ءCache Stampede چیست؟ فرض کن یک کلید در Cache داری:…
  3. Jun 12, 20261. Indexes منابع پیشنهادی این چالش که برای من اینها جذاب بوده و هست. A. Designing Data-Int…
  4. Jun 9, 2026آینده هوش مصنوعی و مهندسی کامپیوتر هوش مصنوعی مهندسی را نابود نمی‌کند، اما در سکوت در حال…
  5. Jun 4, 2026تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز Union Types در C# 15! بالاخره یکی از جذاب‌ت…
  6. Feb 8, 2026👩‍💻 پستگرس رو ۲.۵ برابر سریع‌تر کن! تصور کن مغز متفکر دیتابیست (Parser) رو بدی دست هوش م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →