Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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