ASP.NET Web API este o tehnologie excelentă. Scrierea API-urilor web este atât de ușoară încât mulți dezvoltatori nu pierd timp structurându-și aplicațiile pentru a obține performanțe bune la execuție. În acest articol, voi acoperi 8 tehnici pentru a îmbunătăți performanța API-urilor web ASP.NET. 1) Utilizarea celui mai rapid instrument de serializare JSON Serializarea JSON are un impact critic asupra performanței întregii ASP.NET Web API. În unul dintre proiectele mele, am trecut de la serializorul JSON.NET la ServiceStack.Text timp de un an și jumătate. Am măsurat că performanța API-ului web s-a îmbunătățit cu aproximativ 20%. Îți recomand cu tărie să încerci acest instrument de serializare. Iată câteva date recente de comparație privind performanța instrumentelor populare de serializare.
SerializerPerformanceGraf Sursa: călugărul arzător Actualizare: Se pare că StackOverflow folosește Jil, instrumentul lor de serializare JSON pretins până în prezent. Datele de test pot fi găsite pe pagina lor GitHub Jil serializer. 2) Serializarea manuală a JSON-ului din DataReader Am folosit această abordare în proiectele mele și am primit beneficii de performanță. Poți crea manual șiruri JSON din DataReader și să eviți crearea inutilă de obiecte, astfel încât să nu fie nevoie să iei valori din DataReader și să scrii în obiecte, apoi să iei valori din acele obiecte și să folosești JSON Serializer pentru a genera JSON. Folosește StringBuilder pentru a genera JSON și returnează StringContent la final ca conținut al răspunsului în WebAPI.
Poți vedea mai multe modalități de a face asta pe blogul lui Rick Strahl 3) Folosirea altor formate de protocol (protocol buffer, pachet de mesaje) pe cât posibil Dacă poți folosi alte formate de mesaje în proiectul tău, cum ar fi Protocol Buffers sau MessagePacks, în loc să folosești JSON. Vei obține un avantaj uriaș de performanță, nu doar pentru că Protocol Buffers sunt foarte rapizi în serializare, ci și pentru că sunt formatate mai rapid decât JSON în rezultatele returnate. 4) Implementarea compresiei Folosește GZIP sau Deflate în API-ul tău ASP.NET Web. Compresia este o metodă simplă și eficientă de a reduce dimensiunea și răspunsul pachetelor de răspuns. Aceasta este o funcție foarte necesară, poți consulta mai multe articole despre compresie pe blogul meu ASP.NET Web API, GZip compresie, ActionFilter, cu 8 linii de cod. 5) Utilizarea caching-ului Folosirea caching-ului de ieșire în metoda Web API este profundă. De exemplu, dacă un număr mare de utilizatori accesează conținutul de răspuns care se schimbă doar o dată pe zi. Dacă doriți să implementați cache manuală, cum ar fi memorizarea parolelor utilizatorilor, consultați postarea mea de pe blog Mod simplu de a implementa caching în API-ul web ASP.NET. 6) Folosiți ADO.NET tipice ori de câte ori este posibil Scrierea manuală ADO.NET rămâne cea mai rapidă metodă de a obține valori din baza de date. Dacă performanța API-urilor tale web este cu adevărat importantă pentru tine, atunci nu folosi ORM-uri. Poți vedea comparații de performanță între cele mai populare ORM-uri. ORMMapper
Codul de preluare elegant și scris de mână este rapid și, într-adevăr, toate ORM-urile sunt mai lente decât cele trei. LLBLGen cu cache de rezultate este rapid, dar trebuie să re-itereze rezultatul și să instanțieze obiectul din nou în memorie. 7) Implementarea unei abordări asincrone în API-ul web Folosirea unui serviciu Web API asincron crește dramatic numărul de cereri HTTP procesate de API-urile Web. Implementarea este simplă, doar folosește cuvântul cheie async și schimbă tipul de valoare returnată al metodei tale în Task.
8) Returnează mai multe seturi de rezultate și combinații de mulțimi Reducerea numărului de transferuri nu este benefică doar pentru mai multe baze de date, ci și pentru API-urile Web, care îți permit să folosești puterea seturilor de rezultate. Aceasta înseamnă că poți extrage mai multe seturi de rezultate din DataReader, vezi următorul cod demo:
Poți returna mai multe obiecte într-un singur răspuns dintr-un API web, încearcă să combini obiectele returnate și returnezi următoarele obiecte:
Acest lucru va reduce cererile HTTP către API-ul tău WEB. Mulțumesc că ați citit acest articol.
|