이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 4002|회답: 2

[출처] ASP.NET 코어(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

인터페이스는 MemoryPack과 JSON을 사용해 20만 번 호출되었으며, 결과는 다음과 같았습니다:



메모리팩은 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 버그일 것이며, 다음과 같이 수정되었습니다:

(끝)





이전의:Windows 11 파일 탐색기가 끊기고, 해결책이 막혔습니다
다음:.NET/C# 새로운 기능 레코드 유형
 집주인| 2023-10-1 08:06:35에 게시됨 |
System.Object는 이 프로바이더에 등록되어 있지 않습니다

이 문제는 리핏에서 발생하는 문제입니다. 다음과 같습니다:




 집주인| 2024-12-31 21:47:28에 게시됨 |
Refit에서 파일을 다운로드하여 응답 흐름을 확인하세요 (참고:다운로드된 전체 파일 스트림이 메모리에 로드되지 않습니다



면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com