Класът HttpClient е по-подходящ като сингълтон за един домейн на приложение. Това означава, че сингълтонът трябва да бъде споделен в множество класове контейнери. С тази тактика получавате сингълтон, но това затруднява споделянето. Класът HttpClient реализира IDisposable интерфейс.
Трябва ли да създадем нов единичен екземпляр на HttpClient за всички заявки?
Въпреки че внедрява интерфейса IDisposable, той всъщност е споделен обект. Това означава, че под завивките той е повторно влизащ и безопасен за конци. Вместо да създавате нов екземпляр на HttpClient за всяко изпълнение, вие трябва да споделяте един екземпляр на HttpClient за целия живот на приложението.
Трябва ли да използвате повторно
HttpClient е предназначен да бъде инстанциран веднъж и да се използва повторно през целия живот на приложението. Създаването на клас HttpClient за всяка заявка ще изчерпи броя на наличните сокети при тежки натоварвания. Това ще доведе до грешки в SocketException.
HttpClient неуправляван ли е?
Въпреки че HttpClient индиректно внедрява IDisposable интерфейса, стандартното използване на HttpClient не е да го изхвърля след всяка заявка. Обектът HttpClient е предназначен да живее толкова дълго, колкото приложението ви трябва да прави HTTP заявки.
HttpClient безопасен ли е за нишки?
HttpClient е напълно безопасен за нишки, когато се използва с безопасен за нишки мениджър на връзки, като MultiThreadedHttpConnectionManager. … В същото време екземплярът на HttpClient и мениджърът на връзки трябва да бъдат споделени между всички нишки за максимална ефективност.