Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 4002|Răspunde: 2

[Sursă] ASP.NET Core (24) se bazează pe Refit și comunicare de înaltă performanță MemoryPack

[Copiază linkul]
Postat la 30-09-2023 22:10:36 | | | |
Cerințe: Pe baza arhitecturii microserviciilor folosite de ASP.NET Core, unele servicii sunt infrastructură (servicii de bază) care trebuie să comunice frecvent cu un anumit serviciu, iar performanța ridicată și latența scăzută sunt deosebit de importante.

Utilizarea protocolului MemoryPack pentru serializarea datelor are două avantaje față de JSON: serializare rapidă și transfer mic de conținut, care îmbunătățesc performanța.

Recenzie:

Benchmark-uri de performanță MessagePack și protobuf-net
https://www.itsvse.com/thread-10655-1-1.html

.net/c# Comparație de serializare XML, Json, Hessian, Protocol Buffers
https://www.itsvse.com/thread-4675-1-1.html

Interfața a fost apelată de 200.000 de ori folosind MemoryPack și JSON, iar rezultatele au fost următoarele:



MemoryPack durează 29.895 milisecunde
JSON durează 34.283 milisecunde

Deoarece eu suntTestul local, golul nu este foarte vizibilCând apelurile cross-host, câmpurile cresc, iar volumul de date crește, cred că diferența va fi mai evidentă.

ASP.NET Configurația de bază suportă protocolul MemoryPack

Deoarece obiectul este serializat folosind protocolul MemoryPack și apoi trimis prin protocolul HTTP, ASP.NET Core trebuie să suporte protocolul MemoryPack, iar o nouă clasă MemoryPackInputFormatter este creată, codul este următorul:

Apoi, MvcOptions adaugă suport pentru protocolul MemoryPack, cu următorul cod:

Definiți un obiect de transport cu următorul cod UserProfile:


Metoda controlerului adaugă o interfață cu următorul cod:

Consola folosește Refit pentru a trimite cereri HTTP

O aplicație de consolă folosește MemoryPack pentru a serializa obiecte și a trimite cereri HTTP către interfețe, cu următorul cod:

Testul este următorul:



Când se folosește MemoryPackSerializer pentru a serializa un obiect, următorul cod va da o eroare:


System.Object nu este înregistrat la acest furnizor

Ar trebui să fie un bug al MemoryPack, modificat astfel:

(Sfârșit)





Precedent:Sacadări în Explorerul de fișiere din Windows 11, soluție blocată
Următor:.NET/C# noul tip de înregistrare de funcționalitate
 Proprietarul| Postat la 2023-10-1 08:06:35 |
System.Object nu este înregistrat la acest furnizor

Această problemă este legată de Refit, după cum urmează:




 Proprietarul| Postat la 2024-12-31 21:47:28 |
Descarcă fișierul cu Refit pentru a primi un flux de răspuns (Notă:Întregul flux de fișiere descărcat nu este încărcat în memorie



Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com