نمایش نتایج 1 تا 3 از 3

نام تاپیک: مراقب استفاده از HttpClient باشید

  1. #1

    مراقب استفاده از HttpClient باشید

    سلام دوستان
    تو یکی از پروژه های اخیر که کار میکردم به یه مشکل خیلی جالب برخوردم که فکر میکنم بیشتر شما هم همین مشکل رو دارید.
    جریان از این قرار بود که بعذ از یه مدتی که پروژه کارش رو شروع کرده بود و درخواست ها زیاد شده بودن پرفرمنس خیلی اومده بود پایین و واقعا نرم افزار ناپایدار بود، از دسترس خارج میشد و خطا میداد! ریز به ریز کدها رو بررسی کردم هیچ مشکلی نبود یعنی مشکلی که باعث این ناپایداری بشه نبود، خیلی اتفاقی کانکشن ها رو بررسی میکردم که متوجه شدم کانکشن هایی که باز میشن بسته نمیشن تا یه مدت (کوتاه) با یه حساب سرانگشتی دیدم بله همین جریان داره باعث ناپایداری میشه.
    وقتی از بلاک using برای HttpClient استفاده میکنیم این مشکل پیش میاد و ویندوز 240 ثانیه هر کانکشن رو باز نگه میداره تا ببینه درخواستی میاد یا نه (ممکنه وسط راه مشکل شبک یا هرچیزی باشه و درخواست دیر به سرور برسه برای همین منتظر میمونه) و دقیقا مشکل همینجا بود، که بعد از استفاده از یک نمونه استتیک از HttpClient و دیدن نتایج و آنالیز تفاوت خیلی زیادی رو دیدم.
    نکته جالب این قسمتش بود که همه ما از using استفاده میکنیم و طبق گفته خود مایکروسافت خیلی هم خوبه اما تو این یک مورد باعث همچین مشکلی میسه.

    متن کامل مقاله با تصاویر و کدهای پروژه نمونه و همینطور سورس کد پروژه نمونه رو تو سایت گذاشتم میتونید ببینید : https://sadin.ir/Articles/Article/bi...ing-httpclient

  2. #2

    نقل قول: مراقب استفاده از HttpClient باشید

    مطلب جالبی بود. اما میشه از یه دید دیگه هم به این قضیه نگاه کرد و Using رو برای استفاده از HttpClient رد نکرد.

    بزرگترین مشکلی که توی نمونه کد مقاله مورد نظر بود، این بود که از Using در حلقه For استفاده کردن. این کار از پایه اشتباه هست. ما هیچ وقت Using رو در یک حلقه قرار نمیدیم که دائما تکرار شه. وقتی این اتفاق بیفته، حتی اگر HttpClient هم نباشه ترافیک منابع میره بالا. با یه تغییر ساده کد و عوض کردن جای حلقه For و بلاک Using مشکل حل میشه
    در مورد 240 ثانیه صحبت شما سر جاش باقی میمونه اما این اتفاق وقتی رخ میده که حلقه تمام شده(فرض میکنیم که فعالیت کاربر به پایان رسیده) و ما سروریس رو قطع می کنیم. اگر از Using هم استفاده نکنیم، باید متد Dispose رو برای سرویس فراخونی کنیم

  3. #3

    نقل قول: مراقب استفاده از HttpClient باشید

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

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: یک شنبه 26 مرداد 1399, 00:59 صبح
  2. httpClient
    نوشته شده توسط mo_re_s در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 06 بهمن 1388, 23:51 عصر
  3. پاسخ: 2
    آخرین پست: شنبه 21 شهریور 1388, 14:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •