Требования: Исходя из архитектуры микросервисов, используемой ASP.NET Core, некоторые сервисы являются инфраструктурой (базовыми сервисами), которые должны часто взаимодействовать с определённым сервисом, и высокая производительность и низкая задержка имеют особое значение.
Использование протокола MemoryPack для сериализации данных имеет два преимущества по сравнению с JSON: быстрая сериализация и небольшая передача контента, что повышает производительность.
Обзор:
Интерфейс вызывался 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, изменённый следующим образом:
(Конец)
|