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

보기: 20310|회답: 0

[ASP.NET] ASP.NET MVC에서 비동기 컨트롤러를 사용합니다

[링크 복사]
게시됨 2018. 4. 1. 오후 3:20:59 | | |
스레드 풀

저는 항상 프로젝트를 비동기식으로 다시 작성하고 싶었지만, ASP.NETMVC3는 작성하기 너무 번거롭고, .NET 4.5와 ASP.NET MVC 코드는 비교적 단순합니다. MS는 항상 이런 방식을 선호하는 것 같아요. 모든 성숙한 것들은 표준화를 위해 여러 버전을 진화시켜야 합니다. ASP.NET 왜 MVC에서 비동기를 사용해야 하는지, IIS는 사용자 요청을 처리하는 스레드 풀을 가지고 있습니다. 새로운 요청이 들어오면 풀 내 스레드들이 요청을 처리하도록 예약되지만, 동시성이 높으면 풀 내 스레드가 더 이상 많은 요청을 처리할 수 없게 되고, 풀 내 모든 스레드가 요청을 처리할 때 바쁘게 됩니다. 요청을 처리하는 스레드는 차단되며, 요청 큐가 가득 차면 웹이 다른 요청에 서비스를 제공할 수 없습니다. 서버는 요청을 거부하고 HTTP 503 바쁜 상태에 있습니다. 네트워크 작업처럼 지연 시간이 많은 경우, 대부분의 스레드는 상태를 기다리고 아무 일도 하지 않습니다. 이런 스레드는 비동기식 프로그래밍을 통해 상태를 더 잘 활용할 수 있습니다.

비동기 처리

예를 들어, 요청이 2초가 걸리는 네트워크 통화를 생성하면, 요청이 이루어집니다동기식과 비동기식 모두 실행에 2초가 소요됩니다。 하지만비동기 통화 중에는 서버가 첫 번째 요청이 완료될 때까지 다른 요청에 대한 응답을 차단하지 않습니다。 따라서 장기 실행 작업을 호출하는 많은 요청이 있을 경우, 비동기 요청은 요청이 대기열에 오르는 것을 막을 수 있습니다. .NET 4.5에서는 최대 스레드 풀이 5000개이며, 비동기 프로그래밍을 단순화하기 위해 wait와 async 키워드도 추가되었습니다.

동기식 또는 비동기식 (MSDN 발췌)

  • 일반적으로 다음 조건이 충족될 때 동기화 파이프라인이 사용됩니다:
  • 간단한 조작 또는 짧은 실행 시간.
  • 효율성보다 단순함이 더 중요합니다.
  • 이 작업은 주로 디스크나 네트워크 오버헤드가 많은 작업보다는 CPU 작업입니다. CPU 제한 작업에 비동기 연산 방식을 사용하는 것은 아무런 이점이 없고 오히려 오버헤드가 더 많아집니다.

일반적으로 비동기식 파이프라인은 다음 조건이 충족될 때 사용됩니다:

  • 연산은 CPU 구속이 아니라 네트워크 바운드(네트워크 바운드) 또는 I/O 바운드입니다.
  • 테스트 결과 차단 작업이 사이트 성능에 병목 현상이 된다는 것이 밝혀졌으며, 이러한 차단 호출에 비동기식 방법을 사용하면 IIS가 더 많은 요청을 처리할 수 있습니다.
  • 병렬성은 코드의 단순함보다 더 중요합니다.
  • 사용자가 장기 실행 요청을 취소할 수 있는 메커니즘을 제공하고자 합니다.

ASP.NET MVC에서 비동기 컨트롤러를 사용합니다






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

Mail To:help@itsvse.com