메인 콘텐츠로 건너뛰기
Translation of pages other than English and Japanese versions is maintained by community contributions. The project does not guarantee the accuracy of the content and may not reflect the latest content.

ASP.NET Core Blazor

최종 업데이트

MagicOnion은 클라이언트로 ASP.NET Core Blazor를 사용하는 시나리오를 지원합니다. 이 문서는 MagicOnion을 Blazor와 함께 사용하는 방법을 보여주고, 고려 사항과 제한 사항을 설명합니다.

호스팅 모델과 렌더링 모드

Blazor에는 두 가지 호스팅 모델, Blazor WebAssembly와 Blazor Server가 있으며, 일부 MagicOnion 기능은 지원되지 않을 수 있습니다.

또한, .NET 8부터는 실제 호스팅 모델이 렌더 모드에 의해 결정됩니다. 예를 들어, Interactive Server 모드인 경우 Blazor Server이고, Interactive WebAssembly 모드인 경우 Blazor WebAssembly입니다. 두 가지 기능을 모두 결합한 자동 모드도 있습니다. 렌더 모드에 의해 결정되는 호스팅 모델에 따라 MagicOnion 기능과 지원이 달라집니다.

정적 서버 (Blazor Server)

정적 서버 모드(정적 SSR)는 서버에서 렌더링한 HTML을 반환하는 모드입니다. 이 모드에서는 ASP.NET Core가 작동하는 서버에서 코드를 실행하기 때문에, MagicOnion 클라이언트는 특별한 제한 없이 작동합니다.

그러나, 정적 서버 모드는 StreamingHub와 같은 실시간 통신 처리를 다루는 데 적합하지 않다는 점을 유의하는 것이 중요합니다.

Interactive Server (Blazor Server)

Interactive Server 모드(Interactive SSR)는 브라우저와 서버를 지속적으로 연결하고, 클라이언트 조작을 서버에 전달하며, 서버에서 렌더링된 HTML을 반환하는 인터랙티브 모드입니다. 이 모드에서는 코드가 ASP.NET Core가 실행되는 서버에서 실행되므로 MagicOnion 클라이언트는 특별한 제한 없이 작동합니다.

StreamingHub를 사용한 실시간 통신을 표시하고 싶다면, Interactive 서버 모드에서는 문제없이 작동합니다.

Interactive WebAssembly (Blazor WebAssembly)

Interactive WebAssembly는 클라이언트 측, 즉 브라우저에서 코드를 실행하는 모드입니다. 이 모드에서 MagicOnion 클라이언트는 브라우저에서 실행되므로 HTTP/2를 사용한 gRPC를 직접 사용할 수 없습니다. 클라이언트와 서버 간의 이 제한을 피하기 위해 추가 구성이 필요합니다. MagicOnion은 다음 메커니즘 중 하나를 지원합니다:

  • gRPC-Web
  • GrpcWebSocketBridge

gRPC-Web 사용하기

gRPC-Web은 웹 브라우저에서 gRPC를 사용하기 위해 gRPC 프로젝트에서 개발한 메커니즘입니다. .NET에서는 Grpc.AspNetCore.Web 및 Grpc.Net.Client.Web 패키지로 이용할 수 있습니다. 자세한 내용은 ASP.NET Core gRPC 앱의 gRPC-Web을 참조하십시오.

Warning

gRPC-Web을 사용하는 경우, Unary만 사용 가능하고 StreamingHub는 지원되지 않습니다. 이는 gRPC-Web이 Duplex Streaming을 지원하지 않기 때문에 발생하는 제한입니다.

GrpcWebSocketBridge 사용하기

GrpcWebSocketBridge는 Cysharp가 제공하는 WebSocket을 사용하여 gRPC 통신을 수행하기 위한 라이브러리입니다. gRPC-Web과 달리 StreamingHub 작동을 지원합니다.

GrpcWebSocketBridge는 gRPC-Web을 기반으로 하지만 gRPC-Web 에코시스템과 호환되지 않으므로 다른 언어로부터의 연결이나 gRPC-Web을 기반으로 한 프록시와 같은 메커니즘과의 연계를 지원하지 않습니다.

Interactive Auto (Blazor Server + WebAssembly)

Interactive 자동 모드는 연결 시 서버 Interactive로 시작하고, 클라이언트 측 애플리케이션 코드가 로드된 후 WebAssembly Interactive로 전환하는 모드입니다.

이 모드는 Blazor Server와 Blazor WebAssembly의 특성을 모두 가지고 있으므로, 각 렌더링을 지원해야 합니다. 특히 MagicOnion이나 gRPC를 처리할 때는 WebAssembly인지 여부에 따라 사용 가능한 통신 방법이 달라지므로 둘 다 지원해야 합니다.

Info

MagicOnion으로 인터랙티브 애플리케이션을 구현할 때 아키텍처의 복잡성을 줄이기 위해 렌더 모드로 Interactive Server 또는 WebAssembly 모드 중 하나를 사용하는 것을 권장합니다.