ASP.NET žiniatinklio API yra puiki technologija. Žiniatinklio API rašymas yra toks paprastas, kad daugelis kūrėjų negaišta laiko struktūrizuodami savo programas, kad pasiektų gerą vykdymo našumą. Šiame straipsnyje apžvelgsiu 8 būdus, kaip pagerinti ASP.NET žiniatinklio API našumą. 1) Naudokite greičiausią JSON serializavimo įrankį JSON serializavimas turi lemiamą poveikį visos ASP.NET žiniatinklio API veikimui. Viename iš savo projektų pusantrų metų perėjau iš JSON.NET serializatoriaus į ServiceStack.Text. Aš išskaičiavau, kad žiniatinklio API našumas pagerėjo apie 20%. Labai rekomenduoju išbandyti šį serializavimo įrankį. Štai keletas naujausių populiarių serializavimo įrankių našumo palyginimo duomenų.
SerializatoriusPerformanceGraf Šaltinis: theburningmonk Atnaujinimas: Atrodo, kad StackOverflow naudoja Jil, jų teigiamas JSON serializavimo įrankis iki šiol. Bandymo duomenis galima rasti jų GitHub puslapyje Jil serializer. 2) Rankiniu būdu serijizuokite JSON iš DataReader Aš naudojau šį metodą savo projektuose ir gavau naudos iš rezultatų. Galite rankiniu būdu kurti JSON eilutes iš DataReader ir išvengti nereikalingo objektų kūrimo, kad jums nereikėtų imti reikšmių iš DataReader ir rašyti į objektus, tada paimti reikšmes iš tų objektų ir naudoti JSON Serializer JSON generuoti. Naudokite "StringBuilder", kad sugeneruotumėte JSON ir grąžintumėte "StringContent" pabaigoje kaip atsakymo turinį žiniatinklio API.
Galite patikrinti daugiau būdų, kaip tai padaryti, Rick Strahl dienoraštyje 3) Kiek įmanoma naudokite kitus protokolo formatus (protokolo buferį, pranešimų paketą) Jei galite naudoti kitus pranešimų formatus savo projekte, pvz., Protocol Buffers arba MessagePacks, o ne naudoti JSON. Gausite didžiulį našumo pranašumą ne tik todėl, kad protokolo buferiai yra labai greiti serializuojant, bet ir todėl, kad jie yra suformatuoti greičiau nei JSON grąžintuose rezultatuose. 4) Įgyvendinkite glaudinimą Naudokite GZIP arba Deflate savo ASP.NET žiniatinklio API. Suspaudimas yra paprastas ir efektyvus būdas sumažinti atsakymų paketų dydį ir reagavimą. Tai labai reikalinga funkcija, galite peržiūrėti daugiau straipsnių apie glaudinimą mano tinklaraštyje ASP.NET Web API GZip glaudinimas ActionFilter su 8 kodo eilutėmis. 5) Naudokite talpyklą Išvesties talpyklos naudojimas žiniatinklio API metode yra labai svarbus. Pavyzdžiui, jei daug vartotojų pasiekia atsakymo turinį, kuris keičiasi tik kartą per dieną. Jei norite įdiegti rankinį talpyklą, pvz., vartotojo slaptažodžių talpyklą į atmintį, žiūrėkite mano tinklaraščio įrašą Paprastas būdas įdiegti talpyklą ASP.NET žiniatinklio API. 6) Jei įmanoma, naudokite tipines ADO.NET Rankiniu būdu parašyta ADO.NET vis dar yra greičiausias būdas gauti reikšmes iš duomenų bazės. Jei žiniatinklio API našumas jums tikrai svarbus, nenaudokite ORM. Galite pamatyti populiariausių ORM našumo palyginimus. ORMMapper
Dapper ir ranka parašytas gavimo kodas yra greitas, ir tikrai pakankamai, visi ORM yra lėtesni nei trys. LLBLGen su rezultatų rinkinio talpykla yra greita, tačiau ji turi iš naujo pakartoti rezultatų rinkinį ir vėl įterpti objektą į atmintį. 7) Įdiekite asinchroninį požiūrį į žiniatinklio API Naudojant asinchroninę žiniatinklio API paslaugą, žymiai padidėja HTTP užklausų, kurias apdoroja žiniatinklio API, skaičius. Įgyvendinimas yra paprastas, tiesiog naudokite asinchroninį raktažodį ir pakeiskite grąžinamos vertės tipą savo metodą į Užduotis.
8) Pateikia kelis rezultatų rinkinius ir rinkinių derinius Perkėlimų skaičiaus sumažinimas yra naudingas ne tik kelioms duomenų bazėms, bet ir žiniatinklio API, o tai leidžia išnaudoti rezultatų rinkinių galią. Tai reiškia, kad galite išgauti kelis rezultatų rinkinius iš DataReader, žiūrėkite šį demonstracinį kodą:
Galite grąžinti kelis objektus vienu atsakymu iš žiniatinklio API, pabandyti sujungti grąžintus objektus ir grąžinti šiuos objektus:
Tai sumažins HTTP užklausų skaičių jūsų WEB API. Dėkojame, kad perskaitėte šį straipsnį.
|