Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 15688|Odgovoriti: 0

[ASP.NET] 8 načinov za izboljšanje zmogljivosti vašega ASP.NET spletnega API-ja

[Kopiraj povezavo]
Objavljeno na 11. 01. 2016 14:37:43 | | | |
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.




Prejšnji:SyntaxError: Missing parentheses in call to print
Naslednji:VSFTPD za dodajanje novih uporabnikov
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com