Sur la mauvaise utilisation de la classe HttpClient

Auteur du billet de blog : Nicolas Hilaire - Neotech Solutions

Nicolas Hilaire

Consultant .NET
  Publié le mercredi 14 septembre 2016

Artisan logiciel particulièrement intéressé par les technologies .NET. Polyvalent et curieux, je suis néanmoins à l'écoute des autres technologies du marché. MVP (Microsoft Most Valuable Professional) de 2007 à 2014, je suis également auteur d'un ouvrage pour apprendre le C#, à destination des débutants et de plusieurs MOOCs sur le C#, Windows Phone ou ASP.NET MVC...

Pour cette fois-ci, un petit relai d’une information trouvée ici : http://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/ indiquant que vous utilisez probablement mal la classe HttpClient. Et je la relaie d’autant plus que je l’utilisais moi-même mal. Voyons le problème.

On a coutume d’utiliser la classe HttpClient pour faire des requêtes GET, POST, etc car elle est très simple à utiliser et en plus elle est asynchrone. Et aujourd’hui dans un monde de plus en plus connecté et avec l’avènement des micro-services, on va l’utiliser de plus en plus. En général, on l'utilise de cette façon :

 

 

Et ce que nous apprends cet article que je vous encourage à lire c’est que l’HttpClient ne doit pas s’utiliser comme ça car il laisse un socket ouvert pendant un certain temps sur la machine, ce qui peut poser des problèmes si trop de sockets sont ouverts en même temps. Et pour éviter cela, on découvre qu’en fait la classe HttpClient est tread-safe et qu’on devrait la déclarer en statique et la partager entre les différentes utilisations :

C’est tout bête, mais il fallait le savoir. C’est chose faite maintenant, plus d’excuse :).

Commentaires