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

보기: 15688|회답: 0

[ASP.NET] ASP.NET 웹 API의 성능을 향상시키는 8가지 방법

[링크 복사]
게시됨 2016. 1. 11. 오후 2:37:43 | | | |
ASP.NET 웹 API는 훌륭한 기술입니다. 웹 API를 작성하는 것은 너무 쉬워서 많은 개발자들이 좋은 실행 성능을 위해 애플리케이션을 구조화하는 데 시간을 들이지 않습니다.
이 글에서는 ASP.NET 웹 API의 성능을 향상시키기 위한 8가지 기법을 다룰 것입니다.
1) 가장 빠른 JSON 직렬화 도구 사용
JSON의 직렬화는 전체 ASP.NET 웹 API 성능에 중요한 영향을 미칩니다. 제 프로젝트 중 하나에서는 JSON.NET 시리얼라이저에서 ServiceStack.Text로 1년 반 동안 전환했습니다.
웹 API의 성능이 약 20% 향상된 것으로 측정했습니다. 이 직렬화 도구를 꼭 사용해 보시길 강력히 추천합니다. 다음은 인기 있는 직렬화 도구들의 성능에 대한 최근 비교 데이터입니다.
SerializerPerformanceGraf
출처: theburningmonk
업데이트: StackOverflow가 지금까지 주장하는 JSON 직렬화 도구를 사용하는 것으로 보입니다. 테스트 데이터는 그들의 GitHub 페이지인 Jil serializer에서 확인할 수 있습니다.
2) DataReader에서 JSON을 수동으로 직렬화하기
저는 이 방식을 제 프로젝트에서 사용해 왔고 성능 향상을 받았습니다.
DataReader에서 JSON 문자열을 수동으로 생성할 수 있어 불필요한 객체 생성을 피할 수 있어, DataReader에서 값을 가져와 객체에 쓰고, 그 객체에서 값을 가져와 JSON Serializer를 사용해 JSON을 생성할 필요가 없습니다.
StringBuilder를 사용해 JSON을 생성하고, WebAPI에서 응답 내용으로 StringContent를 반환하세요.

이 작업을 하는 더 많은 방법은 릭 스트랄의 블로그에서 확인할 수 있습니다
3) 가능한 한 다른 프로토콜 형식(프로토콜 버퍼, 메시지 팩)을 사용하세요
프로젝트 내에서 JSON 대신 프로토콜 버퍼(Protocol Buffers)나 메시지팩(MessagePacks) 같은 다른 메시지 형식을 사용할 수 있다면,
프로토콜 버퍼가 직렬화가 매우 빠르기 때문만이 아니라, 반환되는 결과에서 JSON보다 빠르게 포맷되기 때문에 엄청난 성능 이점을 얻을 수 있습니다.
4) 압축 구현
ASP.NET 웹 API에서 GZIP이나 Deflate를 사용하세요.
압축은 응답 패킷의 크기와 반응성을 줄이는 간단하고 효과적인 방법입니다.
이 기능은 매우 필수적이며, 제 ASP.NET 블로그 'GZip 압축 ActionFilter' 8줄짜리 코드에서 더 많은 글을 참고하실 수 있습니다.
5) 캐싱 사용
웹 API 메서드에서 출력 캐싱을 사용하는 것은 매우 중요합니다. 예를 들어, 많은 사용자가 하루에 한 번만 변경되는 응답 콘텐츠에 접속한다면,
사용자 비밀번호를 메모리에 캐싱하는 등 수동 캐싱을 구현하고 싶다면, 제 블로그 글 '웹 API에서 캐싱을 구현하는 간단한 방법'ASP.NET 참고하세요.
6) 가능한 한 일반적인 ADO.NET 을 사용하세요
수동으로 작성한 ADO.NET 이 여전히 데이터베이스에서 값을 빠르게 얻는 가장 빠른 방법입니다. 웹 API의 성능이 정말 중요하다면 ORM을 사용하지 마세요.
가장 인기 있는 ORM 간의 성능 비교를 확인할 수 있습니다.
ORMMapper


세련되고 손으로 작성한 페치 코드는 빠르고, 모든 ORM이 세 가지 것보다 느립니다.
결과셋 캐시가 있는 LLBLGen은 빠르지만, 결과 집합을 다시 반복하고 객체를 메모리에 인스턴스화해야 합니다.
7) 웹 API에서 비동기식 접근법을 구현하기
비동기식 웹 API 서비스를 사용하면 웹 API가 처리하는 HTTP 요청 수가 크게 증가합니다.
구현은 간단합니다. 비동기 키워드를 사용하고 메서드의 반환 값을 Task로 바꾸면 됩니다.

8) 여러 결과 집합과 집합 조합을 반환합니다
전송 횟수를 줄이는 것은 여러 데이터베이스뿐만 아니라 결과 집합의 힘을 활용할 수 있는 웹 API에도 유리합니다.
즉, DataReader에서 여러 결과 세트를 추출할 수 있으며, 다음 데모 코드를 참고하세요:

웹 API에서 한 번의 응답으로 여러 객체를 반환할 수 있습니다. 반환된 객체들을 합쳐서 다음 객체들을 반환해 보세요:

이렇게 하면 WEB API로 보내는 HTTP 요청을 줄일 수 있습니다.
이 글을 읽어주셔서 감사합니다.




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

Mail To:help@itsvse.com