asp.net core mvc formatters لإدخال messagePack والإخراج.
MessagePack هو تنسيق فعال للتسلسل الثنائي. يتيح لك تبادل البيانات بين لغات متعددة مثل JSON. لكنها أسرع وأصغر. يتم تشفير الأعداد الصحيحة الصغيرة في بايت واحد ، وتتطلب السلاسل القصيرة النموذجية بايت إضافي واحد فقط بالإضافة إلى الأوتار نفسها.
يحدث التفاوض على المحتوى عندما يحدد العميل رأس Accept . التنسيق الافتراضي الذي يستخدمه ASP.NET Core هو JSON. لكن يمكن للعميل تحديد تنسيق MessagePack :
using ( var httpClient = new HttpClient ( ) )
{
client . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/msgpack" ) ) ;
var response = await client . GetAsync ( "/api/products/5" ) ;
var product = response . Content . ReadFromMessagePackAsync < Product > ( ) ;
}في هذا المثال ، يتم استخدام حزمة byndyusoft.net.http.messagepack.
يمكن لتطبيقات ASP.NET Core التي تحتاج إلى دعم تنسيق MessagePack إضافة Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack حزم Nuget وتكوين الدعم. هناك تنسيقات منفصلة للإدخال والمخرجات. يتم استخدام تنسيقات الإدخال عن طريق ربط النموذج. يتم استخدام تنسيقات الإخراج لتنسيق الاستجابات.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack يتم تكوين MessagePack Formatters التي تم تنفيذها باستخدام MessagePackSerializer عن طريق استدعاء AddMessagePackFormatters :
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} يقوم الكود السابق بتسلسل النتائج باستخدام MessagePackSerializer .
يمكن تكوين ميزات MessagePack Formatters باستخدام Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions .
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; يمكن للعملاء طلب تنسيق معين كجزء من عنوان URL ، على سبيل المثال:
يجب تحديد التعيين من مسار الطلب في المسار الذي تستخدمه واجهة برمجة التطبيقات. على سبيل المثال:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ يسمح المسار السابق بتحديد التنسيق المطلوب كملحق ملف اختياري. تتحقق سمة [FormatFilter] لوجود قيمة التنسيق في Routedata وتخطط تنسيق الاستجابة للتنسيق المناسب عند إنشاء الاستجابة.
| طريق | التنسيق |
|---|---|
| /API/المنتجات/5 | تنسيق الإخراج الافتراضي |
| /api/products/5.json | تنسيق JSON (إذا تم تكوينه) |
| /api/products/5.msgpack | تنسيق MessagePack (إذا تم تكوينه) |
للمساهمة ، ستحتاج إلى إعداد بيئتك المحلية ، رؤية المتطلبات الأساسية. للاطلاع على دليل المساهمة وسير العمل ، انظر دورة حياة تطوير الحزمة.
يمكن العثور على نظرة عامة مفصلة حول كيفية المساهمة في الدليل المساهم.
تأكد من تثبيت جميع المتطلبات الأساسية التالية على آلة التطوير الخاصة بك:
srctestsmaster للمشروع