Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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 Core конфигурация поддържа протокола MemoryPack

Тъй като обектът се сериализира чрез протокола MemoryPack и след това се изпраща през HTTP протокола, ASP.NET Core трябва да поддържа протокола MemoryPack и се създава нов клас MemoryPackInputFormatter, кодът е следният:

След това MvcOptions добавя поддръжка за протокола MemoryPack със следния код:

Дефинирайте транспортен обект със следния код на UserProfile:


Методът на контролера добавя интерфейс със следния код:

Конзолата използва Refit за изпращане на HTTP заявки

Конзолно приложение използва MemoryPack за сериализиране на обекти и изпращане на HTTP заявки към интерфейси, с следния код:

Тестът е следният:



При използване на MemoryPackSerializer за сериализация на обект, следният код ще даде грешка:


System.Object не е регистриран в този доставчик

Трябва да е бъг в MemoryPack, модифициран по следния начин:

(Край)





Предишен:Засичане в File Explorer на 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