MessagePack es un formato de serialización binario eficiente. Le permite intercambiar datos entre varios idiomas como JSON. Pero es más rápido y más pequeño. Los enteros pequeños están codificados en un solo byte, y las cadenas cortas típicas requieren solo un byte adicional además de las cuerdas mismas.
Proporciona métodos de extensión para System.net.http.httpclient y System.net.http.httpcontent que realizan serialización automática y deserialización utilizando MessagePack.
Este paquete en realidad depende de Microsoft.Net.Http , y extiende el HttpClient con las funciones MessagePack que probablemente necesitaría hablar con un servicio RESTful como ASP.NET Web API. El paquete funciona en el espacio de nombres System.Net.Http y agrega algunos métodos de extensión útiles a HttpClient y HttpContent .
Entonces, por ejemplo:
using ( var client = new HttpClient ( ) )
{
var product = await client . GetFromMessagePackAsync < Product > ( "http://localhost/api/products/1" ) ;
}o
using ( var client = new HttpClient ( ) )
{
var response = await _client . GetAsync ( "http://localhost/api/products/1" ) ;
response . EnsureSuccessStatusCode ( ) ;
var product = await response . Content . ReadFromMessagePackAsync < Product > ( ) ;
}o
using ( var client = new HttpClient ( ) )
{
var request = new HttpRequestMessage ( HttpMethod . Post , "http://localhost/api/products/1" ) ;
request . Content = MessagePackContent . Create ( new Product ( ) ) ;
var response = await _client . SendAsync ( request ) ;
response . EnsureSuccessStatusCode ( ) ;
} Si intentara usar Microsoft.Net.Http , el método GetFromMessagePackAsync no estaría disponible para usted, y solo podría leer el contenido como datos sin procesar como bytes o cadenas, y tener que hacer la serialización / des-serialización.
También obtiene métodos de extensión para volver a colocar / publicar al servicio en formato MessagePack sin tener que hacerlo usted mismo:
await client . PutAsMessagePackAsync ( "http://localhost/api/products/1" , product ) ;
await client . PostAsMessagePackAsync ( "http://localhost/api/products/1" , product ) ; Este paquete también agrega la clase MessagePackMediaTypeFormatter para formatear las solicitudes y respuestas HttpClient :
using ( var client = new HttpClient ( ) )
{
var formatter = new MessagePackMediaTypeFormatter ( ) ;
var request = new SearchProductRequest { Name = 'iphone' , OrderBy = 'id' } ;
var content = new ObjectContent < SearchProductRequest > ( request , formatter ) ;
var response = await client . PostAsync ( "http://localhost/api/products:search" , content ) ;
var products = await response . Content . ReadAsAsync < Product [ ] > ( new [ ] { formatter } ) ;
}dotnet add package Byndyusoft.Net.Http.MessagePackPara contribuir, deberá configurar su entorno local, ver requisitos previos. Para la Guía de contribución y flujo de trabajo, consulte el ciclo de vida del desarrollo del paquete.
Se puede encontrar una descripción detallada de cómo contribuir en la guía contribuyente.
Asegúrese de haber instalado todos los siguientes requisitos previos en su máquina de desarrollo:
srctestsmaster del proyecto