해결된 질문
작성
·
205
1
blazor 관련 위키를 보면 블레이저 웹어셈블리는 SPA를 구현하는 에디션이라고 나와있는걸 본적이 있습니다.
또 어디서는 blazor 자체가 SPA를 구현하는 프레임워크라고 본 적도 있습니다.
그러면 블레이저 서버의 경우에는 기존의 웹 어플리케이션 방식처럼 예를들면 counter 페이지에서 클릭을 하면 서버에서 완전히 새로운 페이지를 전달해주는 방식으로 동작하는 건가요?? 아니면 블레이저 서버의 경우에도 SPA 방식으로 동작하나요??
혹시 샘플예제에서 page를 변경했을때 크롬의 개발자 툴의 네트워크탭에서 새로운 파일들의 변화가 없는게 spa라서 그런건가요??
제 생각에는 네트워크탭에 변화도 없고 페이지 전환 시 깜빡임도 없어서 spa인거같기는한데...그러면 위키에는 왜 웹어셈블리에만 spa를 구현한다고 강조했나 싶기도하고 헷갈리네요...
추가적으로 페이지 전체가 전달되는지 확인하는 툴이나 방법이 있다면 알려주시면 감사하겠습니다.
질문이 많고 중구난방이라 요약하면 이렇습니다...
blazor server는 spa로 동작하나요?
spa라면 샘플예제의 사이드바를 통해 페이지를 변경했을때 크롬 F12의 네트워크탭의 변화가 없는것도 spa 이기 때문인가요?
크롬 개발자도구의 네트워크 부분을 통해 서버 통신에 관한 동작을 확인하는게 맞나요? 아니라면 다른 툴이나 방법은 어떤게 있을까요?
답변 1
0
굳이 따진다면 SSR, 서버 사이드 렌더링 형식입니다. 웹 어셈블리가 싱글 페이지 어플리케이션 형태로 작동 합니다.
블레이저 서버는 단순한 서버 사이드 렌더링 형식이 아니라 페이지 업데이트를 SignalR을 거쳐서 클라이언트의 브라우저에 표시합니다. 일반적인 서버와 브라우저 간의 통신이 아닌 서버 -> 시그널R -> 브라우저 인 것으로 이해하시면 됩니다. 이 부분은 ASP.NET 프로그램이 처리하므로 크롬 네트워크 탭에서 정확한 변화가 없을 수 있습니다. 그래서 데이터베이스를 처리하는 C# 코드도 브라우저로 오는게 아니라 서버에서 처리 -> SignalR에서 변환 -> 브라우저 출력으로 진행됩니다. 그리고 동작으로 인해 페이지가 새롭게 렌더링 되지 않는 것은 원래 그런 구조로 이해하시면 됩니다. 예를 들어 호스트주소/page/1 에서 호스트주소/page/2로 바로 넘어가게 되고 razor 페이지의 @page가 "/page/{id}" 라고 되어있다면 서버에서 새롭게 렌더링 하지 않고 페이지를 유지해 잘못된 데이터베이스 값을 불러오는 경우가 종종 있습니다. 그렇기 때문에 확실하게 페이지를 바꾸시기 위해서는 navigationmanager를 통해 이동을 구현 하시는 것을 추천드립니다.
개발 환경에서는 Console.WriteLine 또는 Debug.WriteLine을 써 콘솔 명령프롬프트로 확인하는 것이 맞습니다. + ILogger도 있습니다. 서비스 환경에서는.... 아쉽게도 크롬을 통해 확인하는 방법은 없는 것으로 알고 있습니다.