ASP.NET Web API е страхотна технология. Писането на уеб API е толкова лесно, че много разработчици не отделят време за структуриране на приложенията си, за да постигнат добра производителност при изпълнение. В тази статия ще разгледам 8 техники за подобряване на производителността на ASP.NET уеб API. 1) Използвайте най-бързия инструмент за сериализация на JSON Сериализацията на JSON има критично влияние върху производителността на целия ASP.NET Web API. В един от моите проекти преминах от JSON.NET сериализатор към ServiceStack.Text за година и половина. Измерих, че производителността на уеб API се е подобрила с около 20%. Горещо препоръчвам да пробвате този инструмент за сериализация. Ето някои скорошни сравнителни данни за производителността на популярните инструменти за сериализация.
SerializerPerformanceGraf Източник: theburningmonk Актуализация: Изглежда, че изглежда, че StackOverflow използва Jil, техния твърден до момента инструмент за сериализация на JSON. Тестови данни могат да бъдат намерени на тяхната GitHub страница Jil serializer. 2) Ръчно сериализирайте JSON от DataReader Използвал съм този подход в проектите си и съм получавал предимства за представянето. Можете ръчно да създавате JSON низове от DataReader и да избегнете ненужно създаване на обекти, така че да не се налага да взимате стойности от DataReader и да записвате в обекти, след това да взимате стойности от тези обекти и да използвате JSON Serializer за генериране на JSON. Използвайте StringBuilder, за да генерирате JSON и да върнете StringContent накрая като съдържание на отговора в WebAPI.
Можете да разгледате още начини да го направите в блога на Рик Страл 3) Използвайте други протоколни формати (протоколен буфер, пакет съобщения) колкото е възможно повече Ако можете да използвате други формати на съобщения в проекта си, като Protocol Buffers или MessagePacks, вместо да използвате JSON. Ще получите огромно предимство в производителността, не само защото Protocol Buffers са много бързи в сериализацията, но и защото се форматират по-бързо от JSON в получените резултати. 4) Реализиране на компресия Използвайте GZIP или Deflate в ASP.NET уеб API. Компресията е прост и ефективен начин за намаляване на размера и отзивчивостта на отговорните пакети. Това е много необходима функция, можете да разгледате още статии за компресия в моя блог ASP.NET Web API GZip compression ActionFilter с 8 реда код. 5) Използване на кеширане Използването на изходно кеширане в метода Web API е дълбоко. Например, ако голям брой потребители имат достъп до съдържание, което се променя само веднъж на ден. Ако искате да реализирате ръчно кеширане, като кеширане на потребителските пароли в паметта, вижте моя блог пост "Прост начин за реализиране на кеширане в ASP.NET уеб API". 6) Използвайте типични ADO.NET, когато е възможно. Ръчно написаният ADO.NET все още е най-бързият начин да се получат стойности от базата данни. Ако производителността на вашите уеб API е наистина важна за вас, тогава не използвайте ORMs. Можете да видите сравнения на производителността между най-популярните ORM. ORMMapper
Елегантният и ръчно написан код за извличане са бързи и, разбира се, всички ORM са по-бавни от трите. LLBLGen с кеш на resultset е бърз, но трябва да повтори набора от резултати и да инстанцира обекта отново в паметта. 7) Имплементиране на асинхронен подход в уеб API Използването на асинхронна уеб API услуга значително увеличава броя на HTTP заявките, които уеб API-тата обработват. Имплементацията е проста – просто използвайте ключовата дума async и променете типа на връщащата стойност на метода си на Задача.
8) Връща множество набори от резултати и комбинации от тях Намаляването на броя на трансферите е полезно не само за множество бази данни, но и за уеб API-та, които ви позволяват да използвате силата на наборите от резултати. Това означава, че можете да извлечете множество набори от резултати от DataReader, вижте следния демо код:
Можете да върнете няколко обекта в един отговор от уеб API, опитайте да комбинирате върнатите обекти и върнете следните обекти:
Това ще намали HTTP заявките към вашия WEB API. Благодаря, че прочетохте тази статия.
|