Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 15688|Відповідь: 0

[ASP.NET] 8 способів покращити продуктивність вашого ASP.NET Web API

[Копіювати посилання]
Опубліковано 11.01.2016 14:37:43 | | | |
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.
Дякую, що прочитали цю статтю.




Попередній:SyntaxError: Missing parentheses in call to print
Наступний:VSFTPD для додавання нових користувачів
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com