Système.Net.Http.HttpClient vs Windows.Web.Http.HttpClient - Quelles sont les principales différences?

lors du développement des applications bureautiques .NET 4.5 Pour Windows, j'ai été utilisé pour utiliser System.Net.Http.HttpClient pour toute communication avec une API web backend. Je suis en train de développer une application Windows Store et j'ai remarqué l'existence de Windows.Web.Http.HttpClient . J'ai cherché des informations sur ce que sont les principales différences entre les deux clients, mais sans succès.

à Partir de MSDN je sais que je devrais commencer à utiliser le Windows.Web.Http.HttpClient dans mon application Windows Store depuis System.Net.Http.HttpClient peut être supprimé de L'API:

Note Le Système.Net.Http et système.Net.Http.Headers namespace pourrait ne pas être disponible dans les futures versions de Windows pour une utilisation par les applications Windows Store. À partir de Windows 8.1 et Windows Server 2012 R2, utilisez Windows.Web.Http.HttpClient dans les fenêtres.Web.HTTP namespace et les fenêtres associées.Web.Http.Les en-têtes et Windows.Web.Http.Filtre les espaces de noms à la place pour les applications Windows Runtime.

mais en dehors de cette information, j'ai du mal à comprendre quelles sont les principales différences et quel est le principal avantage d'utiliser Windows.Web.Http.HttpClient ? Qu'est-ce que cela ajoute que nous n'avons pas déjà eu dans System.Net.Http.HttpClient ?

les réponses étayées par des documents officiels sont grandement appréciées.

27
demandé sur Patrick Hofman 2015-07-08 14:13:54

2 réponses

Il n'y a pas grand-chose à trouver à ce sujet. Certaines choses qui me viennent à l'esprit:

  • la nouvelle API n'a pas de dépendances à certaines fonctions de Windows de bas niveau, comme L'API actuelle.
  • la nouvelle API est mieux capable de gérer les nouvelles méthodes liées au protocole HTTP, comme les WebSockets, etc.

quelques informations utiles peuvent être trouvées dans ce billet de blog qui a également fait référence cette version de la vidéo . Ils parlent d'un meilleur contrôle du cache, et d'une façon d'ajouter des filtres pour l'authentification, l'accès facile aux cookies, la reconnexion, etc.

13
répondu Patrick Hofman 2015-07-08 11:31:21

Windows.Web.Http est une API WinRT disponible dans tous les langages de programmation WinRT pris en charge: C#, VB, C++/CX et JavaScript. Cela permet d'écrire le même code dans la langue de votre choix.

système.Net.Http est une API. net, et n'est disponible que pour les développeurs C# et VB.

Windows.Web.Http avantages

  • les API WinRT sont écrites en code natif, ce qui se traduit par mieux performance.
  • Windows.Web.Http est au sommet d'une pile HTTP commune à Windows, et réutilise des ressources déjà utilisées par d'autres composants Windows. Système.Net.Http est une implémentation séparée du protocole HTTP qui n'est pas fréquemment utilisé par les autres composants Windows. Ainsi, dans certains cas, vous économisez des ressources en choisissant Windows.Web.Http.
  • Windows.Web.Http a une meilleure intégration avec les types de WinRT, tels que IInputStream , IOutputStream et IBuffer . Éviter les extensions .NET qui convertissent System.IO.Stream en IInputStream ou IOutputStream et System.Array en Windows.Storage.Streams.IBuffer peut améliorer les performances et économiser des ressources dans certains cas.
  • Windows.Web.Http a les nouvelles fonctionnalités, telles que HTTP/2 Prise en charge .
  • Windows.Web.Http est COM basé et peut être utilisé par tout langage de programmation qui comprend COM.

système.Net.Avantages Http""
  • System.Net.Http est disponible depuis Windows 8 ou. Net 4.5 et Windows.Web.Http n'est disponible que depuis Windows 8.1 et Windows Phone 8.1.
  • il est tout droit à port code WinRT en utilisant le système.Net. ASP.NET ou Xamarin (Portable Class Library)
  • Windows 8 et 8.1 projets ou projets bureau: †
    • headers D'authentification et les lettres de créance sont isolées par HttpClient ( exemple )
    • contenant à témoin isolé par HttpClient
    • ne cache pas les réponses HTTP, de sorte que les requêtes suivantes ne viendront jamais du cache, un problème courant avec les serveurs qui ne définit pas le bon en-tête Cache-Control ( exemple )
    • Travaille avec System.Net.NetworkCredential

† Pour Windows Universal Projects (UWP), système.Net.Http est un wrapper sur Windows.Web.Http, comme décrit ici .

autres lectures: démystifier les API HttpClient dans la plate-forme Windows universelle

32
répondu kiewic 2017-05-23 12:02:10