Blazor vs Razor

asp.net-core blazor c# razor

문제

Blazor의 발명으로이 두 언어 사이에 상당한 효율성 (코드 작성과 실제 컴파일 / 코드 실행 모두)이 있는지 궁금합니다.

https://github.com/SteveSanderson/Blazor

실제로 구현 한 사람이라면 성능 테스트를 수행하거나 코드 작성 과정에 대한 일회적 인 의견 (예, 죄송합니다. 요청드립니다)을 평소의 오래된 면도기와 비교해 보았습니까?

수락 된 답변

내가 아래에서 제시하고있는 정보는 Steven Anderson의 2 월 2 일 블로그 항목 과 프로젝트 목표에 대한 내 자신의 이해에서 대부분 의역을 바꾼다 .

Blazor는 현재 .NET Razor 스택의 아이디어와 최신 SPA 프레임 워크 아키텍처를 결합하기위한 것입니다.

코드 생성

이 예제에서 볼 수 있듯이 유연하고 구성 요소 기반 레이아웃을 장려하기위한 것입니다.

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

HTML 마크 업에서 재사용 가능한 구성 요소를 생성합니다.

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

실행

Blazor는 webAssembly가 빠르기 때문에 빠를 것으로 예상됩니다. 브라우저의 Wasm 로더에 의해 직접 실행되는 바이트 코드로 컴파일됩니다. 예를 들어 javascript에서는 .js 파일을 먼저로드하고 별도의 파일을 결합한 다음 파싱하고 토큰 화하고 트리 구조로 빌드 한 다음 브라우저의 자바 스크립트 엔진 (예 : 크롬의 v8 엔진) 으로 해석 할 수 있습니다. .

webAssembly와 자바 스크립트 실행을 심도있게 비교하려면 이 게시물을 참조하십시오.

SPA 아키텍처 및 디자인

Blazor는 React, Vue 및 Angular와 같은 최신 프레임 워크에서 이미 사용 된 아이디어에서 영감을 얻었으며 다음과 같은 게시물에 자세히 설명되어 있습니다.

  • 레이아웃
  • 라우팅
  • 의존성 주입
  • 게으른 로딩
  • 단위 테스트

이러한 개념은 Razor의 서버 측에 존재하지만 모든 클라이언트가 클라이언트 측에 존재하는 것은 아닙니다. 프론트 엔드 라우팅은 Razor에서 사용할 수 없으며이 시나리오를 완료하기 위해 종종 자바 스크립트 프레임 워크와 결합되었습니다.

필자는 개인적으로 Razor 페이지를 AngularJs와 함께 제공하는 엔터프라이즈 애플리케이션에서 작업했습니다. 때때로 지저분해질 수 있으며 결코 '깨끗함'을 느낄 수 없습니다.

요약하자면

Razor는 API 로직 및 서버 측 템플릿을 처리 할 수있는 서버 기반 아키텍처를위한 솔루션이지만 클라이언트 측 로직을 자바 스크립트 외부에 제공 할 수는 없습니다.

Blazor는 Razor와 동일한 서버 측 기능을 제공하지만 자바 스크립트 대신 C# 사용하여 클라이언트 측 로직을 통합하는 다음 단계입니다.

저는 Blazor로 현재 작은 테스트 프로젝트를 진행하고 있으며, 지금까지는 사용하기 쉽습니다. 그러나 블로그와 GitHub 페이지에 대한 경고로 생산 준비가 거의 끝나지 않았습니다.

타사 편집 : 2018-09-26

.NET Conf 2018에서는 Razor 구성 요소 ( "서버 측 Blazor")가 .NET Core 3.0에 포함될 것이라고 발표되었습니다. 이 코드가 표시되었습니다.

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.