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

Вид: 4002|Відповідь: 2

[Джерело] ASP.NET Core (24) базується на Refit, високопродуктивній комунікації MemoryPack

[Копіювати посилання]
Опубліковано 2023-9-30 22:10:36 | | | |
Вимоги: Виходячи з архітектури мікросервісів, яку використовує ASP.NET Core, деякі сервіси є інфраструктурою (базовими сервісами), які повинні часто взаємодіяти з певним сервісом, і висока продуктивність та низька затримка є особливо важливими.

Використання протоколу MemoryPack для серіалізації даних має дві переваги порівняно з JSON: швидка серіалізація та невелика передача контенту, що підвищує продуктивність.

Огляд:

Бенчмарки продуктивності MessagePack та protobuf-net
https://www.itsvse.com/thread-10655-1-1.html

.net/c# Xml, Json, Hessian, порівняння серіалізації буферів протоколів
https://www.itsvse.com/thread-4675-1-1.html

Інтерфейс викликали 200 000 разів за допомогою MemoryPack і JSON, і результати були такими:



MemoryPack займає 29 895 мілісекунд
JSON займає 34 283 мілісекунди

Оскільки яЛокальний тест показує, що розрив майже не помітнийКоли дзвінки між хостами, поля збільшуються, а обсяг даних збільшується, я вважаю, що розрив стане більш очевидним.

ASP.NET Конфігурація ядра підтримує протокол MemoryPack

Оскільки об'єкт серіалізується за протоколом MemoryPack, а потім надсилається через протокол HTTP, ASP.NET Core має підтримувати протокол MemoryPack, і створюється новий клас MemoryPackInputFormatter, код виглядає так:

Потім MvcOptions додає підтримку протоколу MemoryPack з таким кодом:

Визначте транспортний об'єкт із таким кодом UserProfile:


Метод контролера додає інтерфейс із таким кодом:

Консоль використовує Refit для надсилання HTTP-запитів

Консольний додаток використовує MemoryPack для серіалізації об'єктів і надсилання HTTP-запитів на інтерфейси, використовуючи наступний код:

Тест виглядає так:



При використанні MemoryPackSerializer для серіалізації об'єкта наступний код видасть помилку:


System.Object не зареєстрований у цьому провайдері

Це має бути помилка MemoryPack, змінена наступним чином:

(Кінець)





Попередній:Зависання в провіднику файлів Windows 11, зависання рішення
Наступний:.NET/C# новий тип запису функцій
 Орендодавець| Опубліковано 2023-10-1 08:06:35 |
System.Object не зареєстрований у цьому провайдері

Ця проблема стосується Refit, а саме:




 Орендодавець| Опубліковано 2024-12-31 21:47:28 |
Завантажте файл через Refit, щоб отримати відповідь (Примітка:Весь завантажений потік файлів не завантажується в пам'ять



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

Mail To:help@itsvse.com