Blazor 호스팅 모델은 두 가지가 있다.
– Blazor Server
– Blazor WebAssembly
이 두 호스팅 모델의 차이점을 알아보자
Blazor란 무엇인가?
Blazor Server는 2019년 9월, Blazor WebAssembly는 2020년 5월에 출시 되었다.
이 두 호스팅 모델의 주요한 차이점은 dotNet 코드가 실행되는 ‘위치‘임을 기억하자
Blazor Server의 경우 dotNet 코드가 100% 서버 측에서 실행되며,
Blazor WebAssembly 애플리케이션은면 dotNet 코드가 서버와 클라이언트 모두에서 실행된다.
Blazor Server와 Blazor WebAssembly 모두 서버 측 코드를 가지고 있지만 코드의 역할이 다르다.
Blazor Server의 경우 dotNet 런타임과 함께 100% 서버 측이며 프레임워크 JavaScript 라이브러리는
클라이언트에서 서버와 통신하는 데 사용된다.즉, Blazor Server를 사용하면 하나의 애플리케이션을 얻게 된다.
Blazor WASM을 사용하면 클라이언트가 브라우저에서 별도로 dotNet 런타임을 실행하게 된다.
Blazor Server와 Blazor WASM의 장점과 단점
Blazor Server
장점
1. 빠른 초기 로딩 시간: 브라우저로 서버에 연결하여 페이지를 렌더링하므로, 초기 로딩 속도가 빠름
2. 저사양 클라이언트 지원: 클라이언트가 많은 계산 작업을 처리하지 않으므로, 저사양 기기에서도 원활하게 작동
3. 작은 번들 크기: WASM처럼 클라이언트에 애플리케이션을 번들로 내려 보내지 않으므로 초기 파일 다운로드 크기가 작다
4. 빠른 개발 및 디버깅: C#과 .NET 코드가 서버에서 직접 실행되므로 서버 리소스를 활용하며, 실시간 디버깅이 가능. *큰 장점임
5. 보안 관리 용이: 애플리케이션 로직이 서버에서 실행되기 때문에 클라이언트 측 코드 노출이 적어 보안 관리에 용이함
단점
1. 네트워크 의존성: 클라이언트와 서버 간의 지속적인 SignalR 연결이 필요하기 때문에 네트워크가 불안정할 경우 애플리케이션 성능에 영향이 감
2. 확장성 제한: 많은 클라이언트와 연결할 경우 서버 리소스 사용량이 크게 증가하므로, 대규모 서비스에서는 확장성이 제한됨. 대략.. 1000명 이상 서비스 할때는 Client로..
3. 서버 비용: 모든 처리 작업이 서버에서 이루어지기 때문에 서버 비용이 높아질 수 있음(트래픽)
4. 실시간 반응성 제한: SignalR을 통한 서버 통신이 필요하여 사용자의 상호작용이 많은 애플리케이션에서 실시간 반응성이 떨어질 수 있다
—
Blazor WebAssembly (WASM)
장점
1. 서버 독립성: 클라이언트에서 모든 코드가 실행되므로 서버와 독립적으로 작동할 수 있습니다. 특히 정적 파일을 CDN에 배포하여 서버 부하를 크게 줄일 수 있음
2. 오프라인 지원: 클라이언트 측에서 모든 코드가 실행되므로, 네트워크 연결이 끊어져도 일부 기능을 오프라인 상태에서 사용 가능함
3. 확장성: 서버 요청이 최소화되므로, 더 많은 사용자를 동시에 지원할 수 있음
4. 빠른 사용자 반응성: 모든 UI 업데이트와 상호작용이 로컬에서 처리되므로 응답성이 빠름
단점
1. 느린 초기 로딩 시간: WASM 파일을 브라우저로 전송하는 시간이 걸리므로 초기 로딩 속도가 상대적으로 느리다고 볼 수 있음. 사용자의 PC 사양에 영향을 받음
2. 브라우저 메모리 사용량: 클라이언트에서 모든 애플리케이션 코드를 실행하기 때문에 브라우저 메모리 사용량이 높아질 수 있으며, 클라이언트 사양에 따라 성능 저하가 있을 수 있음. 위와 같은 말
3. 한계가 있는 .NET API 지원: 모든 .NET API가 WASM에서 지원되지 않기 때문에 기능 제공에 제한적인 부분이 있음
4. 보안 위험: 애플리케이션 로직이 클라이언트에 노출되기 때문에 중요한 로직이 외부에 노출될 위험. 보안에 취약할 수 있다
—
2줄 요약
– Blazor Server는 실시간 연결을 유지해야 하고, 서버 성능에 영향을 받지만, 초기 로딩이 빠르고 저사양 기기에서도 잘 작동함. (소규모 서비스에 유리)
– Blazor WASM은 클라이언트에서 자체적으로 애플리케이션을 실행하므로 오프라인 지원이 가능하고, 서버 부하가 적지만 초기 로딩 시간과 클라이언트 성능에 영향을 받음.(대규모 서비스에 유리)