MessagePack هو تنسيق فعال للتسلسل الثنائي. يتيح لك تبادل البيانات بين لغات متعددة مثل JSON. لكنها أسرع وأصغر. يتم تشفير الأعداد الصحيحة الصغيرة في بايت واحد ، وتتطلب السلاسل القصيرة النموذجية بايت إضافي واحد فقط بالإضافة إلى الأوتار نفسها.
يوفر طرق التمديد لـ system.net.http.httpclient و system.net.http.httpcontent التي تؤدي التسلسل التلقائي والخرس باستخدام 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 متاحة لك ، وستكون قادرًا فقط على قراءة المحتوى مثل البيانات الأولية مثل Bytes أو String ، وعليك القيام بالتسلسل / التخلص من نفسك.
يمكنك أيضًا الحصول على طرق تمديد لوضع / نشر إلى الخدمة بتنسيق 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 للمشروع