ASP.NET Web API je odlična tehnologija. Pisanje spletnih API-jev je tako enostavno, da mnogi razvijalci ne vložijo časa v strukturiranje svojih aplikacij za dobro zmogljivost izvajanja. V tem članku bom predstavil 8 tehnik za izboljšanje zmogljivosti ASP.NET spletnih API-jev. 1) Uporaba najhitrejšega orodja za serijalizacijo JSON Serializacija JSON ima ključen vpliv na zmogljivost celotnega ASP.NET spletnega API-ja. V enem od svojih projektov sem prešel z JSON.NET serializatorja na ServiceStack.Text za leto in pol. Izmeril sem, da se je zmogljivost spletnega API-ja izboljšala za približno 20 %. Toplo priporočam, da preizkusite to orodje za serijalizacijo. Tukaj je nekaj nedavnih primerjalnih podatkov o zmogljivosti priljubljenih orodij za serializacijo.
SerializerPerformanceGraf Vir: theburningmonk Posodobitev: Zdi se, da StackOverflow uporablja Jil, njihovo doslej domnevno orodje za serializacijo JSON. Testni podatki so na voljo na njihovi GitHub strani Jil serializer. 2) Ročno serializirati JSON iz DataReaderja Ta pristop sem uporabljal v svojih projektih in prejel izboljšave uspešnosti. JSON nize lahko ročno ustvarite iz DataReaderja in se izognete nepotrebnemu ustvarjanju objektov, tako da vam ni treba jemati vrednosti iz DataReaderja in pisati v objekte, nato pa iz teh objektov jemati vrednosti in uporabljati JSON Serializer za generiranje JSON-a. Uporabite StringBuilder za generiranje JSON in na koncu vrnite StringContent kot vsebino odgovora v WebAPI-ju.
Več načinov za to si lahko ogledate na blogu Ricka Strahla 3) Uporaba drugih protokolnih formatov (protokolni medpomnilnik, paket sporočil) kolikor je mogoče Če lahko v svojem projektu uporabite druge formate sporočil, kot so protokolni medpomnilniki ali paketi sporočil, namesto uporabe JSON-a. Pridobili boste veliko prednost v zmogljivosti, ne le zato, ker so protokolni medpomnilniki zelo hitri pri serijalizaciji, ampak tudi zato, ker so v vrnjenih rezultatih formatirani hitreje kot JSON. 4) Implementacija stiskanja Uporabite GZIP ali Deflate v svojem ASP.NET spletnem API-ju. Stiskanje je preprost in učinkovit način za zmanjšanje velikosti in odzivnosti odzivnih paketov. To je zelo nujna funkcija, več člankov o stiskanju si lahko ogledate na mojem blogu ASP.NET Web API, GZip kompresiji ActionFilter z 8 vrsticami kode. 5) Uporaba predpomnjenja Uporaba izhodnega predpomnjenja v metodi Web API je poglobljena. Na primer, če veliko število uporabnikov dostopa do vsebine odgovorov, se ta spremeni le enkrat na dan. Če želite implementirati ročno predpomnjenje, na primer shranjevanje uporabniških gesel v pomnilnik, si oglejte moj blog zapis Preprost način za implementacijo predpomnjenja v ASP.NET Web API. 6) Uporabljajte običajne ADO.NET, kadar je to mogoče Ročno zapisano ADO.NET je še vedno najhitrejši način za pridobivanje vrednosti iz baze podatkov. Če vam je zmogljivost spletnih API-jev res pomembna, potem ne uporabljajte ORM-jev. Lahko vidite primerjave zmogljivosti med najbolj priljubljenimi ORM-ji. ORMMapper
Elegantna in ročno napisana fetch koda sta hitra, in res, vsi ORM-ji so počasnejši od teh treh. LLBLGen z predpomnilnikom rezultatov je hiter, vendar mora ponovno iterirati nabor rezultatov in objekt ponovno instancirati v pomnilniku. 7) Implementacija asinhronega pristopa v spletni API Uporaba asinhrone spletne API storitve dramatično poveča število HTTP zahtevkov, ki jih obdelujejo spletni API-ji. Implementacija je preprosta, samo uporabite asinhrono ključno besedo in spremenite tip vrnjene vrednosti vaše metode v Task.
8) Vrne več nizov rezultatov in kombinacij množic Zmanjšanje števila prenosov ni koristno le za več baz podatkov, ampak tudi za spletne API-je, ki omogočajo uporabo moči rezultatov. To pomeni, da lahko iz DataReaderja izluščite več nizov rezultatov, glej naslednjo demo kodo:
Iz spletnega API-ja lahko vrnete več objektov v enem odzivu, poskusite združiti vrnjene objekte in vrnite naslednje objekte:
To bo zmanjšalo HTTP zahteve za vaš WEB API. Hvala, ker ste prebrali ta članek.
|