ASP.NET Web API — це чудова технологія. Писати веб-API настільки просто, що багато розробників не витрачають час на структурування своїх додатків для отримання якісної продуктивності виконання. У цій статті я розгляну 8 технік для покращення продуктивності ASP.NET веб-API. 1) Використовуйте найшвидший інструмент серіалізації JSON Серіалізація JSON має критичний вплив на продуктивність усього ASP.NET Web API. В одному з моїх проєктів я перейшов з серіалайзера JSON.NET на ServiceStack.Text протягом півтора року. Я виміряв, що продуктивність Web 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. Ви отримаєте величезну перевагу в продуктивності не лише тому, що буфери протоколу дуже швидкі у серіалізації, а й тому, що вони форматуються швидше, ніж JSON, у отриманих результатах. 4) Реалізувати стиснення Використовуйте GZIP або Deflate у вашому ASP.NET веб-API. Стиснення — це простий і ефективний спосіб зменшити розмір і чутливість пакетів відповіді. Це дуже необхідна функція, ви можете ознайомитися з іншими статтями про стиснення у моєму блозі ASP.NET Web API GZip compression ActionFilter з 8 рядками коду. 5) Використання кешування Використання кешування вихідних даних у методі Web API є глибоким. Наприклад, якщо велика кількість користувачів отримує доступ до контенту-відповіді, це змінюється лише раз на день. Якщо ви хочете реалізувати ручне кешування, наприклад, кешувати паролі користувачів у пам'ять, дивіться мій блог-пост «Простий спосіб реалізувати кешування у ASP.NET Web API». 6) Використовуйте типові ADO.NET, коли це можливо Ручний ADO.NET все ще найшвидший спосіб отримати значення з бази даних. Якщо продуктивність ваших веб-API для вас дуже важлива, тоді не використовуйте ORM. Ви можете побачити порівняння продуктивності найпопулярніших ORM. ORMMapper
Dapper і рукописний код для завантаження швидкі, і справді, всі ORM повільніші за три. LLBLGen з кешом набору результатів працює швидко, але потрібно повторно ітерувати набір результатів і знову інстанцювати об'єкт у пам'яті. 7) Впровадити асинхронний підхід у Web API Використання асинхронного веб-API сервісу суттєво збільшує кількість HTTP-запитів, які обробляють веб-API. Реалізація проста: просто використовуйте async ключове слово і змініть тип поверненого значення методу на Завдання.
8) Повертає кілька наборів результатів і їх комбінації Зменшення кількості передач корисне не лише для кількох баз даних, а й для веб-API, які дозволяють використовувати потужність наборів результатів. Це означає, що ви можете витягти кілька наборів результатів із DataReader, дивіться наступний демо-код:
Ви можете повертати кілька об'єктів в одній відповіді з веб-API, спробуйте об'єднати повернені об'єкти і повернути такі об'єкти:
Це зменшить кількість HTTP-запитів до вашого WEB API. Дякую, що прочитали цю статтю.
|