ASP.NET Web API je skvělá technologie. Psaní webových API je tak snadné, že mnoho vývojářů nevěnuje čas strukturování svých aplikací, aby dosáhli dobrého výkonu. V tomto článku se zaměřím na 8 technik pro zlepšení výkonu ASP.NET webových API. 1) Použijte nejrychlejší nástroj JSON serializace Serializace JSON má zásadní dopad na výkon celého ASP.NET Web API. V jednom z mých projektů jsem přešel z JSON.NET serializéru na ServiceStack.Text na rok a půl. Změřil jsem, že výkon webového API se zlepšil asi o 20 %. Důrazně doporučuji vyzkoušet tento nástroj pro serializaci. Zde jsou nedávná srovnávací data o výkonu populárních nástrojů pro serializaci.
SerializerPerformanceGraf Zdroj: theburningmonk Aktualizace: Zdá se, že StackOverflow používá Jil, jejich dosud tvrdě deklarovaný nástroj pro serializaci JSON. Testovací data lze najít na jejich stránce Jil serializer na GitHubu. 2) Ruční serializace JSON z DataReaderu Tento přístup jsem používal ve svých projektech a získal jsem benefity v porovnání. JSON řetězce můžete ručně vytvářet z DataReaderu a vyhnout se zbytečné tvorbě objektů, takže nemusíte brát hodnoty z DataReaderu a zapisovat do objektů, pak z nich brát hodnoty a používat JSON Serializer k generování JSON. Použijte StringBuilder k generování JSON a na konci vraťte StringContent jako obsah odpovědi ve WebAPI.
Další způsoby, jak to udělat, najdete na blogu Ricka Strahla 3) Používejte co nejvíce jiné formáty protokolů (protokolový buffer, balíček zpráv) Pokud můžete ve svém projektu použít jiné formáty zpráv, například Protocol Buffers nebo MessagePacks, místo JSON. Získáte obrovskou výkonnostní výhodu, nejen proto, že Protocol Buffery jsou velmi rychlé v serializaci, ale také proto, že jsou ve vrácených výsledcích formátovány rychleji než JSON. 4) Implementace komprese Použijte GZIP nebo Deflate ve svém ASP.NET Web API. Komprese je jednoduchý a účinný způsob, jak snížit velikost a odezvu paketů odezvy. Je to velmi důležitá funkce, více článků o kompresi si můžete přečíst na mém blogu ASP.NET Web API GZip kompresi ActionFilter s 8 řádky kódu. 5) Použití cache Použití výstupního cacheování v metodě Web API je zásadní. Například pokud velké množství uživatelů přistupuje k obsahu odpovědí, mění se to pouze jednou denně. Pokud chcete implementovat manuální cachování, například ukládání uživatelských hesel do paměti, podívejte se na můj blogový příspěvek Jednoduchý způsob, jak implementovat cachování v ASP.NET Web API. 6) Používejte běžné ADO.NET kdykoli je to možné Ručně psané ADO.NET je stále nejrychlejší způsob, jak získat hodnoty z databáze. Pokud je pro vás výkon webových API opravdu důležitý, pak ORM nepoužívajte. Můžete vidět srovnání výkonu mezi nejpopulárnějšími ORM. ORMMapper
Elegantní a ručně psaný fetch kód jsou rychlé a skutečně, všechny ORM jsou pomalejší než ty tři. LLBLGen s cache resultsetu je rychlý, ale musí resultset znovu projít a objekt znovu instancovat v paměti. 7) Implementovat asynchronní přístup ve Web API Použití asynchronní webové API služby dramaticky zvyšuje počet HTTP požadavků, které webové API zpracovávají. Implementace je jednoduchá, stačí použít asynchronní klíčové slovo a změnit typ návratové hodnoty metody na Task.
8) Vrací více sad výsledků a jejich kombinace Snížení počtu přenosů je výhodné nejen pro více databází, ale také pro webová API, která vám umožňují využít sílu výsledků. To znamená, že z DataReaderu můžete extrahovat více sad výsledků, viz následující demo kód:
Můžete vrátit více objektů v jedné odpovědi z webového API, zkuste zkombinovat vrácené objekty a vrátit následující objekty:
To sníží HTTP požadavky na vaše WEB API. Děkuji, že jste si přečetli tento článek.
|