[Blazor] Blazor 란?

참고


WebAssembly 란?

  • 웹 어샘블리는 C나 C++와 같은 프로그래밍 언어를 컴파일해서 어느 브라우저에서나 빠르게 실행되는 바이너리 형식으로 바꿔주는 기술을 의미합니다.
  • 일반적으로 웹 어플리케이션을 개발할 때 사용하는 언어는 HTML/CSS/JavaScript 이며, 그 중 JavaScript 는 동적인 부분을 개발합니다.
  • 기존의 개발은 JavaScript로 개발을 하다보니 게임이나 동영상 편집기 등과 같은 고성능의 애플리레이션은 브라우저에서 동작하는데 어려움이 있습니다.
  • 웹 어셈블리 모듈은 웹앱으로 가져와서 JavaScript를 통해 사용할 수 있게 할 수 있습니다.
  • JavaScript 프레임워크는 웹 어셈블리를 사용해서 대규모 성능 이점과 새로운 기능을 제공하면서 웹 개발자가 쉽게 기능을 사용할 수 있도록 할 수 있습니다.

Blazor 란?

  • Blazor 는 Blazor를 사용하여 대화형 클라이언트 쪽 웹 UI를 빌드하기 위한 프레임워크 입니다.
    • JavaScript 대신 C#을 사용하여 풍부한 대화형 UI를 만듭니다.
    • .NET에서 작성된 서버 쪽 및 클라이언트 쪽 앱 논리를 공유합니다.
    • 모바일 브라우저를 포함한 광범위한 브라우저 지원을 위해 UI를 HTML 및 CSS 로 렌더링합니다.
    • Docker 와 같은 최신 호스트 플랫폼과 통합합니다.
    • .NET 및 Blazor를 사용하여 하이브리드 데스크톱 및 모바일 앱을 빌드합니다.
  • 클라이언트 쪽 웹 개발에 .NET을 사용하면 다음과 같은 이점이 있습니다.
    • JavaScript 대신 C# 으로 코드를 작성합니다.
    • .NET 라이브러리의 기존 .NET 에코시스템을 활용합니다.
    • 서버 및 클라이언트에서 앱 논리를 공유합니다.
    • .NET의 성능, 안정성 및 보안을 활용합니다.
    • 안정적이로, 기능이 풍부하고, 사용하기 쉬운 공통 언어, 프레임워크 및 도구 세트를 기반으로 빌드합니다.

Blazor 아키텍처

  • Blazor는 실제로 Angular 또는 React 같은 JavaScript 프런트 엔드 프레임워크와 유사한 클라이언트 쪽 웹 UI 프레임워크입니다.
  • Blazor는 사용자 상호 작용을 처리하고 필요한 UI 업데이터를 렌더링합니다.
  • Blazor는 요청-회신 모델을 기반으로 하지 않습니다.
  • 사용자 상호 작용은 특정 HTTP 요청의 컨텍스트에 포함되지 않는 이벤트로 처리됩니다.
  • Blazor 앱은 HTML 페이지에서 렌더링되는 하나 이상의 루트 구성 요소로 구성됩니다.

  • 사용자가 구성 요소를 렌더링할 위치 및 사용자 상호 작용의 구성 요소를 연결하는 방식을 지정하는 방법은 호스팅 모델에 따라 다릅니다.
  • Blazor 구선 요소는 재사용 가능한 UI 부분을 나타내는 .NET 클래스입니다.
  • 각 구성 요소는 자체 상태를 유지 관리하며 다른 구성 요소 렌더링을 포함할 수 있는 자체 렌더링 논리를 지정합니다.
  • 구성 요소는 구성 요소 상태를 업데이트하기 위한 특정 사용자 상호 작용의 이벤트 처리기를 지정합니다.
  • 구성 요소가 이벤트를 처리한 후 Blazor는 구성 요소를 렌더링하고 렌더링된 출력에서 변경 내용을 추적합니다.
  • 구성 요소는 DOM(문서 개체 모델)으로 직접 렌더링되지 않습니다.
  • 대신, RenderTree 라는 DOM 의 메모리 내 표현으로 렌더링되므로 Blazor가 변경 내용을 추적할 수 있습니다.
  • Blazor 는 새로 렌더링된 출력을 이전 출력과 비교하여 DOM에 효율적으로 적용 될 UI 차이를 계산합니다.

  • 구성 요소는 정상적인 UI 이벤트 외부에서 상태가 변경되는 경우 렌더링되어야 함을 수동으로 나타낼 수도 있습니다.
  • Blazor 는 SynchronizationContext 를 사용하여 단일 논리적 실행 스레드를 적용합니다.
  • 구성 요소의 수명 주기 메서드 및 Blazor에서 발생하는 모든 이벤트 콜백은 SynchronizationContext에서 실행됩니다.
728x90

'웹 프로그래밍 > Blazor' 카테고리의 다른 글

[Blazor] 라우팅 및 탐색  (0) 2022.10.23
[Blazor] Layout  (0) 2022.10.22
[Blazor] 바인딩  (0) 2022.10.22
[Blazor] SignalR 이란?  (0) 2022.10.21
[Blazor] Blazor 앱 만들기  (0) 2022.10.21

이 글을 공유하기

댓글

Designed by JB FACTORY