desde consumir consume c# .net windows-store-apps dotnet-httpclient

consumir - httpclient c#



System.Net.Http.HttpClient vs Windows.Web.Http.HttpClient-¿Cuáles son las principales diferencias? (2)

Al desarrollar aplicaciones de escritorio .NET 4.5 para Windows, me han utilizado para usar System.Net.Http.HttpClient para todas las comunicaciones con una API web de back-end. Ahora estoy desarrollando una aplicación de Windows Store y he notado la existencia de Windows.Web.Http.HttpClient . He buscado información sobre cuáles son las principales diferencias entre los dos clientes, pero sin suerte.

Desde MSDN sé que debo comenzar a usar Windows.Web.Http.HttpClient en mi aplicación de la Tienda Windows, ya que System.Net.Http.HttpClient puede eliminarse de la API:

Nota Es posible que el espacio de nombres System.Net.Http y System.Net.Http.Headers no esté disponible en futuras versiones de Windows para que lo utilicen las aplicaciones de la Tienda Windows. A partir de Windows 8.1 y Windows Server 2012 R2, use Windows.Web.Http.HttpClient en el espacio de nombres Windows.Web.Http y los espacios de nombres relacionados con Windows.Web.Http.Headp y Windows.Web.Http.Filters en lugar de las aplicaciones de Windows Runtime .

Pero aparte de esta información, me resulta difícil descubrir cuáles son las principales diferencias y cuál es el principal beneficio de usar Windows.Web.Http.HttpClient ? ¿Qué agrega que no tenemos ya en System.Net.Http.HttpClient ?

Respuestas respaldadas por documentación oficial son muy apreciadas.


No hay mucho que encontrar al respecto. Algunas cosas que vienen a mi mente:

  • La nueva API no tiene dependencias para algunas funciones de Windows de bajo nivel, como la API actual tiene.
  • La nueva API es más capaz de manejar nuevos métodos relacionados con el protocolo HTTP, como WebSockets, etc.

En esta publicación del blog se puede encontrar cierta información útil que también hace referencia a este video de Build . Hablan sobre un mejor control de caché y una forma de agregar filtros para la autenticación, fácil acceso a las cookies, reconectarse, etc.


Windows.Web.Http es una API de WinRT disponible en todos los lenguajes de programación de WinRT compatibles: C #, VB, C ++ / CX y JavaScript. Esto permite la opción de escribir el mismo código en el idioma de su elección.

System.Net.Http es una API .NET, y solo está disponible para desarrolladores de C # y VB.

Ventajas de Windows.Web.Http

  • Las API de WinRT están escritas en código nativo, lo que se traduce en un mejor rendimiento.
  • Windows.Web.Http está encima de una pila HTTP de Windows común y reutiliza los recursos que ya están en uso por otros componentes de Windows. System.Net.Http es una implementación separada del protocolo HTTP que no es utilizada frecuentemente por otros componentes de Windows. Entonces, en algunos casos, ahorra recursos al elegir Windows.Web.Http.
  • Windows.Web.Http tiene una mejor integración con los tipos WinRT, como IInputStream , IOutputStream e IBuffer . Evitar las extensiones .NET que convierten System.IO.Stream en IInputStream o IOutputStream y System.Array en Windows.Storage.Streams.IBuffer puede mejorar el rendimiento y ahorrar recursos en algunos casos.
  • Windows.Web.Http tiene las nuevas características, como el soporte HTTP / 2 .
  • Windows.Web.Http está basado en COM y puede ser utilizado por cualquier lenguaje de programación que entienda COM.

Ventajas de System.Net.Http

  • System.Net.Http está disponible desde Windows 8 o .NET 4.5 y Windows.Web.Http solo está disponible desde Windows 8.1 y Windows Phone 8.1.
  • Es sencillo transferir el código de WinRT usando System.Net.Http a ASP.NET o Xamarin (biblioteca de clases portátil)
  • Proyectos de Windows 8 y 8.1 o proyectos de escritorio: †
    • Los encabezados y las credenciales de autenticación están aislados por HttpClient ( example )
    • Contenedor de galletas aislado por HttpClient
    • No almacena las respuestas HTTP en la memoria caché, por lo que las solicitudes subsiguientes nunca provendrán de la memoria caché, un problema común con los servidores que no establece el encabezado de Cache-Control correcto ( example )
    • Funciona con System.Net.NetworkCredential

† Para Proyectos Universales de Windows (UWP), System.Net.Http es un contenedor sobre Windows.Web.Http, como se describe here .

Más información: Desmitificar las API de HttpClient en la plataforma universal de Windows