Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 4002|Resposta: 2

[Fonte] ASP.NET Core (24) é baseado em Refit e comunicação de alto desempenho MemoryPack

[Copiar link]
Postado em 2023-9-30 22:10:36 | | | |
Requisitos: Com base na arquitetura de microserviços usada pelo ASP.NET Core, alguns serviços são infraestrutura (serviços básicos) que precisam se comunicar frequentemente com determinado serviço, e alto desempenho e baixa latência são particularmente importantes.

O uso do protocolo MemoryPack para serializar dados tem duas vantagens em relação ao JSON: serialização rápida e pequena transferência de conteúdo, o que melhora o desempenho.

Revisar:

Benchmarks de desempenho MessagePack e protobuf-net
https://www.itsvse.com/thread-10655-1-1.html

.net/c# Comparação de serialização de XML, Json, Hessian, Protocol Buffers
https://www.itsvse.com/thread-4675-1-1.html

A interface foi chamada 200.000 vezes usando MemoryPack e JSON, e os resultados foram os seguintes:



MemoryPack leva 29.895 milissegundos
O JSON leva 34.283 milissegundos

Já que eu souExame local, a diferença não é muito perceptívelQuando as chamadas cross-host, os campos aumentam e o volume de dados aumentam, acredito que a diferença será mais evidente.

ASP.NET Configuração Core suporta o protocolo MemoryPack

Como o objeto é serializado usando o protocolo MemoryPack e então enviado pelo protocolo HTTP, ASP.NET Core precisa suportar o protocolo MemoryPack, e uma nova classe MemoryPackInputFormatter é criada, o código é o seguinte:

Depois, o MvcOptions adiciona suporte para o protocolo MemoryPack, com o seguinte código:

Defina um objeto de transporte com o seguinte código UserProfile:


O método controlador adiciona uma interface com o seguinte código:

O console usa Refit para enviar requisições HTTP

Um aplicativo de console usa o MemoryPack para serializar objetos e enviar requisições HTTP para interfaces, com o seguinte código:

O teste é o seguinte:



Ao usar o MemoryPackSerializer para serializar um objeto, o seguinte código gerará um erro:


O System.Object não está registrado neste provedor

Deve ser um bug do MemoryPack, modificado da seguinte forma:

(Fim)





Anterior:Travamento no Explorador de Arquivos do Windows 11, solução travada
Próximo:.NET/C# novo tipo de registro de destaque
 Senhorio| Postado em 2023-10-1 08:06:35 |
O System.Object não está registrado neste provedor

Esse problema é do Refit, da seguinte forma:




 Senhorio| Postado em 31-12-2024 21:47:28 |
Baixe o arquivo com o Refit para obter um fluxo de resposta (Nota:Todo o fluxo de arquivos baixado não é carregado na memória



Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com