HttpClient კლასი უფრო შესაფერისია როგორც singleton ერთი აპლიკაციის დომენისთვის. ეს ნიშნავს, რომ singleton უნდა იყოს გაზიარებული რამდენიმე კონტეინერის კლასში. ამ ტაქტიკით, თქვენ მიიღებთ სინგლიტონს, მაგრამ ეს ართულებს გაზიარებას. HttpClient კლასი ახორციელებს IDisposable ინტერფეისს.
უნდა შევქმნათ HttpClient-ის ახალი ერთი ეგზემპლარი ყველა მოთხოვნისთვის?
მიუხედავად იმისა, რომ იგი ახორციელებს IDisposable ინტერფეისს, ის რეალურად არის საერთო ობიექტი. ეს ნიშნავს, რომ გადასაფარებლის ქვეშ არის ხელახლა ჩასასვლელი და ძაფისგან უსაფრთხოდ. იმის ნაცვლად, რომ შექმნათ HttpClient-ის ახალი ეგზემპლარი ყოველი შესრულებისთვის, თქვენ უნდა გააზიაროთ HttpClient-ის ერთი ეგზემპლარი აპლიკაციის მთელი სიცოცხლის მანძილზე.
ხელახლა უნდა გამოიყენოთ
HttpClient არის განზრახულია განხორციელდეს ერთხელ და ხელახლა გამოიყენოს აპლიკაციის მთელი ცხოვრების განმავლობაში. HttpClient კლასის დაყენება ყოველი მოთხოვნისთვის ამოწურავს სოკეტების რაოდენობას, რომლებიც ხელმისაწვდომია მძიმე დატვირთვის პირობებში. ეს გამოიწვევს SocketException შეცდომებს.
უმართავია
მიუხედავად იმისა, რომ HttpClient ირიბად ახორციელებს IDisposable ინტერფეისს, HttpClient-ის სტანდარტული გამოყენება არ არის მისი განკარგვა ყოველი მოთხოვნის შემდეგ. HttpClient ობიექტი გამიზნულია იცოცხლოს მანამ, სანამ თქვენს აპლიკაციას სჭირდება HTTP მოთხოვნები.
უსაფრთხოა თუ არა HttpClient thread-ისთვის?
HttpClient სრულიად უსაფრთხოა thread-ში, როდესაცგამოიყენება thread-უსაფრთხო კავშირის მენეჯერთან, როგორიცაა MultiThreadedHttpConnectionManager. … ამავე დროს, HttpClient ინსტანცია და კავშირის მენეჯერი უნდა იყოს გაზიარებული ყველა თემაში მაქსიმალური ეფექტურობისთვის.