ASP.NET Core SignalR을 사용해야 하는 경우

완료됨

SignalR은 실시간 웹 기능을 제공합니다. Contoso Pizza에는 주문 상태 및 배달을 추적하기 위한 라이브 맵이 필요합니다. 피크 시간 동안의 판매 손실로 인해 팀은 클라이언트 쪽 폴링보다 더 나은 솔루션을 알아보아야 했습니다.

의사 결정 기준

SignalR을 선택하지 말아야 할 때를 아는 것은 선택해야 할 때를 아는 것만큼 중요합니다. 실시간 웹 기능을 사용할 때 앱의 사용자 경험은 대응 능력에 달려 있습니다. 애플리케이션의 어떤 부분에 실시간 업데이트가 필요한지를 이해하는 것이 좋습니다.

SignalR을 사용하지 않는 경우

SignalR은 기본 연결만큼만 내구성이 있습니다. 즉, 클라이언트 애플리케이션 연결에 문제가 있는 경우 SignalR은 최선의 선택이 아닙니다.

또 다른 고려 사항은 SignalR의 확장성입니다. 동시에 연결된 클라이언트 수에 따라 웹 서버가 한도에 도달하면 리소스 경합이 발생할 수 있습니다. 이와 같은 상황에서는 애플리케이션을 서버 팜에 배포하고 백플레인을 사용해야 할 수 있습니다. 이를 직접 수행하는 것은 지루할 수 있습니다.

또는 Azure SignalR Service를 사용하여 이 문제를 해결할 수 있습니다. 또는 다양한 복원력 및 재해 복구 메커니즘을 활용하여 완화할 수 있습니다.

SignalR 형식 예시

SignalR은 온-프레미스, 클라우드 또는 Azure SignalR Service에서 사용할 수 있습니다.

  • 온-프레미스:

    온-프레미스에서 사용되는 ASP.NET Core SignalR의 다이어그램.

  • 클라우드에서:

    클라우드에서 사용되는 ASP.NET Core SignalR의 다이어그램.

  • Azure SignalR Service 사용:

    Azure SignalR Service 사용 다이어그램.

적절한 사용 사례

SignalR은 기존 HTTP 요청을 대체하지 않습니다. 애플리케이션은 SignalR을 사용하여 특정 HTTP 요청을 수행할 시기를 알 수 있습니다. 이러한 방식으로 서로를 보완합니다.

SignalR에는 여러 가지 적절한 사용 사례가 있습니다. 다음 목록은 SignalR를 사용하기에 적절한 경우를 나타냅니다.

  • 서버에서 업데이트가 자주 필요한 앱:
    • 게임
    • 소셜 네트워크
    • Voting
    • 경매
    • GPS 앱
  • 대시보드 및 모니터링 앱:
    • 회사 대시보드
    • 라이브 맵
    • 즉각적인 판매 업데이트
    • 여행 알림
    • CI/CD(연속 통합/지속적인 업데이트) 파이프라인 페이지
  • 공동 작업 및 다중 사용자 대화형 앱:
    • 화이트보드 앱
    • 팀 회의 앱
    • 문서 공유 앱
    • Visual Studio Live Share
  • 즉시 알림이 필요한 앱:
    • 메일 앱
    • 채팅 앱
    • 턴 기반 게임
    • 시계열 보고
    • GitHub 작업, 문제 및 끌어오기 요청 시스템

Contoso Pizza 시나리오

Contoso Pizza 라이브 주문 맵의 클라이언트 쪽 폴링 솔루션을 고려할 때 SignalR은 실행 가능한 대안이 될 수 있습니다. 모든 프로그래밍 및 아키텍처를 결정할 때와 마찬가지로, SignalR의 장단점을 판단하는 것이 매우 중요합니다.