• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

Blazor web app 생성할때 질문있습니다.

24.01.25 14:37 작성 조회수 153

0

  • 렌더링이 어디서 일어나느냐에 따라서 블레이저 서버와 웹어셈블리로 프로젝트를 구분하는데,
    .net 8.0 부터 blazor web app 이 추가된 것이라고 설명해주셨는데요...
    프로젝트 생성시, 샘플로 있던 페이지 중에 counter 증가되는 것만 클라이언트쪽에 생성되고,
    나머지 페이지들은 서버쪽에 생성되었습니다. 
  • 클라이언트 쪽에는 DB 연결과 상관없는 기존의 자바스크립트로 동작하는 것이 주로 오는 것이고,
    서버 쪽에는 DB 사용하는 페이지들이 존재하는 것인지 궁금합니다.

    즉, 어떤 것을 기준으로 클라이언트와 서버를 나누는 것인지 궁금합니다.
     
  • blazor WASM을 선택해도, 페이지에 연결되는 DB 처리를 위해서는 API로 서버를 호출해서 결과를 받아와서 바인딩을 해준다면...
    blazor Server로 작성해서 해당 부분을 바인딩하는 것과 차이가 어떤 것인지 궁금합니다.
    또한, 실제 실무에서는 어떤 방식이 더 선호되는지 궁금합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요 stone님!

폭풍(?) 질문 덕에 저도 많이 배웁니다!

 

1) 프로젝트 생성시, 샘플로 있던 페이지 중에 counter 증가되는 것만 클라이언트쪽에 생성

  • counter page가 실행되고 유저와 상호작용하고 데이터 갱신하고 이런 모든 작업이 유저의 웹 브라우저에서 실행됨니다.

 

2) 나머지 페이지들은 서버에 생성

  • 렌더링이 서버에서 일어나고 그 결과만 R-Signal 을 통해 웹페이지에 뿌려지게 됩니다.

 

그리고 server에 생성된다는 말이 애매한데.. blazor server에서 이 server가 솔루션 밑에 특정 프로젝트를 말하는게 아니라 asp.net core 서버에서 렌더링을 해주고 웹 페이지에는 결과만 뿌려주는 방식을 말합니다. 그러니까 페이지가 다른 프로젝트에 있다고해서 뭐야.. 서버인데 왜 페이지가 여기있어? 이게 아닙니다ㅠ

 

DB 동작은 말씀하신대로 어디에서나 할 수 있습니다. 위처럼 렌더링 차이만 고려하면 됩니다.

아래는 Server 장단점인데 요구 사항+아래 장단점 고려해서 정하시면 됩니다.

 

Blazor Server 단점

렌더링 작업은 서버에서 수행되기에 항성 서버에 연결이 되어야 한다.
인터넷 연결이 잘못된 경우 사이트가 작동하지 않을 수 있다.
또한 Blazor Server를 사용하지않는 사이트와 큰차이로는
페이지를 전송을 한 후 다른 페이지가 요청이 있을때 까지 연결을 끊을 수 있는데,
Blazor를 사용하면 해당 연결(SignalR)이 항상 연결되있어야 한다.연결이 되있어야 하니 offline/PWA 모드는 없다.모든 클릭, 페이지 업데이트는 서버로 왕복해야 하므로 대기 시간이 길어질 수 있다.
Blazor Server는 변경된 데이터만 전송을 한다.
느린 응답 시간을 경험해 본 적이 없다. 라고 작자는 말한다.서버에 연결해야 하기에 해당 서버의 로드가 증가하여 확장이 어렵다.
이 문제를 해결하기 위해 Azure SignalR 허브를 사용하면 지속적인 연결을
처리하고, 서버가 콘텐츠 전송에 집중할 수 있다.
Azure SignalR Service란?
ASP.NET Core용 SignalR에서 허브 사용실행 할 수 있으려면 ASP.NET Core를 지원하는 서버여야 한다.

Blazor Server 장점

클라이언트가 다운받는 형태가 아주 작은형태로 전송된다 물론 충분히 코드가 포함되어 있다.서버에서 실행중이므로 앱은 서버의 기능을 최대한 활용 할 수 있다.사이트가 WebAssembly를 지원하지 않는 이전 웹브라우저에도 작동한다.코드가 서버에서 실행되며 서버에 남아 있으므로 코드를 디컴파일 할 수 없다.코드는 서버(또는 클라우드)에서 실행되므로 조직 내의 서비스 및 데이터베이스에 직접 호출 할수 있다.

실무에서는 WASM 선호합니다. off-line에서 실행되고 처음에 브라우저에 모든 파일만 다운 받아 놓으면 server도 필요없고 속도도 빠르고 서버 관련된 이슈들을 신경안써도 되니까요. 그런데 .NET 8.0에서는 auto 모드가 생겨서 상황에 맞게 switching되는 것 같습니다. 저도 더 공부를 해야겠지만요... 아래 블로그랑 유튜브 영상 참고해주세요! 도움이 되실겁니다.

 

https://amsomad.github.io/c%23/Web_Development_With_Blazor/

https://youtu.be/O7oaxFgNuYo?si=e53P_3K4a6ONpVnO

stone님의 프로필

stone

질문자

2024.02.05

답변주셔서 감사합니다.^^

근데...프로젝트가 2개로 구분되어서 생성되면...빌드시 어셈블리도 2개가 생성될 것이고...서버프로젝트쪽에서 참조프로젝트로 클라이언트 프로젝트를 참조하고 있는 구조인데..
2개의 프로젝트로 구분되는 것의 장점과
실제 IIS에 배포하는 것과 실행되는 구조를 잘 모르겠습니다.

휴...많이 어렵습니다.