ASP.NET Core 개요 SignalR

SignalR이란 무엇인가요?

ASP.NET Core SignalR은 앱에 실시간 웹 기능을 추가하는 것을 간소화하는 오픈 소스 라이브러리입니다. 실시간 웹 기능을 사용하면 서버측 코드에서 클라이언트에 콘텐츠를 즉시 푸시할 수 있습니다.

SignalR에 적합한 후보:

  • 서버에서 자주 업데이트해야 하는 앱. 예를 들어 게임, 소셜 네트워크, 투표, 경매, 지도 및 GPS 앱이 있습니다.
  • 대시보드 및 모니터링 앱. 예를 들어 회사 대시보드, 인스턴트 판매 업데이트 또는 여행 경고가 있습니다.
  • 공동 작업 앱. 화이트보드 앱 및 팀 모임 소프트웨어는 공동 작업 앱의 예입니다.
  • 알림이 필요한 앱입니다. 소셜 네트워크, 이메일, 채팅, 게임, 여행 경고 및 기타 많은 앱에서 알림을 사용합니다.

SignalR은 서버-클라이언트 RPC(원격 프로시저 호출)를 만들기 위한 API를 제공합니다. RPC는 서버 쪽 .NET Core 코드의 클라이언트에서 함수를 호출합니다. 지원되는 플랫폼은 몇 가지가 있으며, 각 플랫폼은 해당 클라이언트 SDK와 함께 제공됩니다. 이로 인해 RPC 호출에 의해 호출되는 프로그래밍 언어는 다릅니다.

ASP.NET Core에 대한 SignalR의 몇 가지 기능은 다음과 같습니다.

  • 연결 관리를 자동으로 처리합니다.
  • 모든 연결된 클라이언트에 메시지를 동시에 보냅니다. 예를 들어 대화방이 있습니다.
  • 특정 클라이언트나 클라이언트의 그룹에 메시지를 보냅니다.
  • 늘어난 트래픽을 처리하도록 크기를 조정합니다.
  • SignalR 허브 프로토콜

원본은 GitHub의 SignalR 리포지토리에서 호스팅됩니다.

전송

SignalR에서는 실시간 통신을 처리하는 다음과 같은 기술을 지원합니다(정상적인 대체 순서).

  • WebSocket
  • 서버에서 보낸 이벤트
  • 긴 폴링

SignalR은 서버 및 클라이언트의 기능 내에서 가장 적합한 전송 방법을 자동으로 선택합니다.

허브

SignalR은 허브를 사용하여 클라이언트와 서버 간에 통신합니다.

허브는 클라이언트와 서버가 서로 메서드를 호출할 수 있도록 하는 높은 수준의 파이프라인입니다. SignalR은 클라이언트에서 서버에 대한 메서드를 호출할 수 있도록 하고 그 반대의 경우도 가능하게 하는 컴퓨터 경계 간 디스패치를 처리합니다. 강력한 형식의 매개 변수를 메서드에 전달하여 모델 바인딩을 사용할 수 있습니다. SignalR에서는 ON을 기반으로 하는 텍스트 프로토콜과 MessagePack을 기반으로 JS하는 이진 프로토콜이라는 두 가지 기본 제공 허브 프로토콜을 제공합니다. MessagePack은 일반적으로 JSON과 비교하여 더 작은 메시지를 만듭니다. 이전 브라우저는 MessagePack 프로토콜 지원을 제공하기 위해 XHR 수준 2를 지원해야 합니다.

허브는 클라이언트 쪽 메서드의 이름 및 매개 변수를 포함하는 메시지를 전송하여 클라이언트 쪽 코드를 호출합니다. 메서드 매개 변수로 보낸 개체는 구성된 프로토콜을 사용하여 역직렬화됩니다. 클라이언트는 클라이언트 쪽 코드의 메서드와 이름을 일치시키려고 시도합니다. 클라이언트에서 일치하는 항목을 찾으면 메서드를 호출하여 역직렬화된 매개 변수 데이터를 전달합니다.

ECMAScript 6(ES6)을 지원하지 않는 브라우저

SignalR 는 ES6을 대상으로 합니다. ES6을 지원하지 않는 브라우저의 경우 라이브러리를 ES5로 변환합니다. 자세한 내용은 Traceur 및 Babel을 사용하여 ES6에서 ES5로 ES6 변환 시작 - ES6 변환을 참조하세요.

추가 리소스