MessagePack เป็นรูปแบบการทำให้เป็นอนุกรมไบนารีที่มีประสิทธิภาพ ช่วยให้คุณแลกเปลี่ยนข้อมูลระหว่างหลายภาษาเช่น JSON แต่มันเร็วขึ้นและเล็กลง จำนวนเต็มขนาดเล็กถูกเข้ารหัสเป็นไบต์เดียวและสตริงสั้น ๆ ทั่วไปต้องการไบต์พิเศษเพียงหนึ่งไบต์นอกเหนือจากสตริงด้วยตัวเอง
ให้วิธีการขยายสำหรับ system.net.http.httpClient และ system.net.http.httpcontent ที่ดำเนินการอนุกรมและ deserialization อัตโนมัติโดยใช้ MessagePack
แพ็คเกจนี้ขึ้นอยู่กับ Microsoft.Net.Http และขยาย HttpClient ด้วยคุณสมบัติ MessagePack ที่คุณอาจต้องพูดคุยกับบริการที่เป็นที่พักผ่อนเช่น ASP.NET Web API แพ็คเกจทำงานในเนมสเปซ 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 ของโครงการ