MessagePack - это эффективный формат бинарной сериализации. Это позволяет обмениваться данными среди нескольких языков, таких как JSON. Но это быстрее и меньше. Небольшие целые числа закодированы в один байт, а типичные короткие строки требуют только одного дополнительного байта в дополнение к самим струнам.
Предоставляет методы расширения для system.net.http.httpclient и system.net.http.httpcontent, которые выполняют автоматическую сериализацию и десеризацию с использованием MessagePack.
Этот пакет на самом деле зависит от Microsoft.Net.Http и расширяет HttpClient с функциями MessagePack , которые вам, вероятно, потребуется поговорить с сервисным сервисом, таким как веб -API ASP.NET. Пакет работает в пространстве имен System.Net.Http и добавляет некоторые удобные методы расширения в HttpClient и HttpContent .
Так, например:
using ( var client = new HttpClient ( ) )
{
var product = await client . GetFromMessagePackAsync < Product > ( "http://localhost/api/products/1" ) ;
}или
using ( var client = new HttpClient ( ) )
{
var response = await _client . GetAsync ( "http://localhost/api/products/1" ) ;
response . EnsureSuccessStatusCode ( ) ;
var product = await response . Content . ReadFromMessagePackAsync < Product > ( ) ;
}или
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 ( ) ;
} Если вы попытались просто использовать Microsoft.Net.Http , метод GetFromMessagePackAsync не будет доступен для вас, и вы сможете прочитать только необработанные данные, такие как байты или строка, и должны выполнять сериализацию / де-протериализацию.
Вы также получаете методы расширения, чтобы вернуть / отправлять обратно в службу в формате MessagePack , не делая этого самостоятельно:
await client . PutAsMessagePackAsync ( "http://localhost/api/products/1" , product ) ;
await client . PostAsMessagePackAsync ( "http://localhost/api/products/1" , product ) ; Этот пакет также добавляет класс MessagePackMediaTypeFormatter для форматирования запросов и ответов 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.MessagePackЧтобы внести свой вклад, вам нужно будет настроить местную среду, см. Предварительные условия. Руководство для вклада и рабочего процесса см. В жизненном цикле разработки упаковки.
Подробный обзор того, как внести свой вклад, можно найти в Руководстве для участия.
Убедитесь, что вы установили все следующие предпосылки на машине разработки:
srctestsmaster филиал проекта