ASP.NET -Kern -MVC -Formatter für MessagePack -Ein- und -ausgabe.
MessagePack ist ein effizientes binäres Serialisierungsformat. Sie können Daten unter mehreren Sprachen wie JSON austauschen. Aber es ist schneller und kleiner. Smallg vonzahlen werden in ein einzelnes Byte codiert, und typische kurze Saiten benötigen zusätzlich zu den Saiten selbst nur ein zusätzliches Byte.
Inhaltsverhandlungen treten auf, wenn der Kunde einen Accept angibt. Das von ASP.NET Core verwendete Standardformat ist JSON. Der Client kann jedoch das MessagePack -Format angeben:
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 > ( ) ;
}In diesem Beispiel wird Byndyusoft.net.http.MessagePack -Paket verwendet.
ASP.NET CORE -Apps, die das MessingPack -Format unterstützen müssen, können die Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack -Nuget -Pakete hinzufügen und Support konfigurieren. Es gibt separate Formatter für Eingabe und Ausgabe. Eingangsformatter werden durch Modellbindung verwendet. Ausgangsformatters werden verwendet, um Antworten zu formatieren.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack MessagePack -Formatteren, die mit MessagePackSerializer implementiert sind, werden konfiguriert, indem AddMessagePackFormatters aufgerufen werden:
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} Der vorhergehende Code serialisiert Ergebnisse mit MessagePackSerializer .
Funktionen für die MessagePack -Formaten können mit Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions konfiguriert werden.
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; Clients können beispielsweise ein bestimmtes Format als Teil der URL anfordern:
Die Zuordnung aus dem Anforderungspfad sollte in der Route angegeben werden, die die API verwendet. Zum Beispiel:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ Die vorhergehende Route ermöglicht das angeforderte Format als optionale Dateierweiterung. Die Attributprüfungen [FormatFilter] für die Existenz des Formatwerts in der Routedata und ordnen das Antwortformat dem entsprechenden Formatierer ab, wenn die Antwort erstellt wird.
| Route | Formatierer |
|---|---|
| /API/Produkte/5 | Das Standardausgangsformatierer |
| /api/products/5.json | Das JSON -Formatierer (falls konfiguriert) |
| /api/products/5.msgpack | Das MessagePack -Formatierer (falls konfiguriert) |
Um einen Beitrag zu leisten, müssen Sie Ihre lokale Umgebung einrichten und Voraussetzungen sehen. Für den Beitrags- und Workflow -Leitfaden finden Sie den Lebenszyklus für Paketentwicklung.
Ein detaillierter Überblick über den Beitrag zum Beitrag finden Sie im Beitrag zur beitragenden Anleitung.
Stellen Sie sicher, dass Sie alle folgenden Voraussetzungen auf Ihrer Entwicklungsmaschine installiert haben:
srctests hinzu odermaster -Zweigstelle des Projekts