ASP.NET Web API je skvelá technológia. Písanie webových API je také jednoduché, že mnohí vývojári nevenujú čas štruktúrovaniu svojich aplikácií, aby dosiahli dobrý výkon. V tomto článku sa budem venovať 8 technikám na zlepšenie výkonu ASP.NET webových API. 1) Použiť najrýchlejší JSON nástroj na serializáciu Serializácia JSON má zásadný vplyv na výkon celého ASP.NET Web API. V jednom z mojich projektov som prešiel z JSON.NET serializéru na ServiceStack.Text na rok a pol. Zmeral som, že výkon webového API sa zlepšil približne o 20 %. Veľmi odporúčam vyskúšať tento nástroj na serializáciu. Tu sú niektoré nedávne porovnávacie údaje o výkone populárnych nástrojov na serializáciu.
SerializerPerformanceGraf Zdroj: theburningmonk Aktualizácia: Zdá sa, že StackOverflow používa Jil, ich doteraz tvrdený nástroj na serializáciu JSON. Testovacie údaje nájdete na ich GitHub stránke Jil serializer. 2) Manuálne serializovať JSON z DataReader Tento prístup som používal vo svojich projektoch a dosiahol som výhody v oblasti výkonu. JSON reťazce môžete manuálne vytvárať z DataReaderu a vyhnúť sa zbytočnému vytváraniu objektov, takže nemusíte brať hodnoty z DataReaderu a zapisovať do objektov, potom z nich brať hodnoty a používať JSON Serializer na generovanie JSON. Použite StringBuilder na generovanie JSON a na konci vráťte StringContent ako obsah odpovede vo WebAPI.
Viac spôsobov, ako to urobiť, si môžete pozrieť na blogu Ricka Strahla 3) Používať iné protokolové formáty (protokolový buffer, balík správ) čo najviac Ak môžeš použiť iné formáty správ vo svojom projekte, ako sú Protocol Buffers alebo MessagePacks, namiesto JSON. Získate obrovskú výkonnostnú výhodu, nielen preto, že protokolové buffery sú veľmi rýchle pri serializácii, ale aj preto, že sú vo vrátených výsledkoch formátované rýchlejšie ako JSON. 4) Implementovať kompresiu Použite GZIP alebo Deflate vo vašom ASP.NET Web API. Kompresia je jednoduchý a efektívny spôsob, ako znížiť veľkosť a odozvy paketov odpovede. Toto je veľmi potrebná funkcia, viac článkov o kompresii si môžete pozrieť na mojom blogu ASP.NET Web API, GZip kompresii ActionFilter s 8 riadkami kódu. 5) Použitie cache Použitie výstupného cacheovania v metóde Web API je zásadné. Napríklad, ak veľké množstvo používateľov pristupuje k obsahu odpovedí, mení sa to len raz denne. Ak chcete implementovať manuálne cachovanie, napríklad ukladanie používateľských hesiel do pamäte, pozrite si môj blogový príspevok Jednoduchý spôsob, ako implementovať caching v ASP.NET Web API. 6) Používajte bežné ADO.NET vždy, keď je to možné Manuálne písanie ADO.NET je stále najrýchlejší spôsob, ako získať hodnoty z databázy. Ak je pre vás výkon vašich webových API naozaj dôležitý, ORM nepoužívajte. Môžete vidieť porovnania výkonu medzi najpopulárnejšími ORM. ORMMapper
Elegantný a ručne písaný fetch kód sú rýchle a naozaj, všetky ORM sú pomalšie ako tie tri. LLBLGen s vyrovnávacou pamäťou resultsetu je rýchly, ale musí resultset znovu iterovať a objekt znova inštancovať v pamäti. 7) Implementovať asynchrónny prístup vo webovom API Použitie asynchrónnej webovej API služby dramaticky zvyšuje počet HTTP požiadaviek, ktoré webové API spracovávajú. Implementácia je jednoduchá, stačí použiť asynchrónne kľúčové slovo a zmeniť typ návratovej hodnoty vašej metódy na Task.
8) Vráti viacero výsledkov a kombinácie množín Zníženie počtu prenosov je prospešné nielen pre viaceré databázy, ale aj pre webové API, ktoré vám umožňujú využiť silu výsledkov. To znamená, že z DataReaderu môžete extrahovať viacero výsledkov, pozrite si nasledujúci demo kód:
Môžete vrátiť viacero objektov v jednej odpovedi z webového API, skúste spojiť vrátené objekty a vráťte nasledujúce objekty:
Tým sa znížia HTTP požiadavky na vaše WEB API. Ďakujem, že ste si prečítali tento článok.
|