ASP.NET Core 2.0 Razor 대 Angular / React / etc


101

우리 팀과 저는 엔터프라이즈 수준 웹 응용 프로그램 개발을 시작하기위한 자금을 받았습니다 (그 기능에 대해 자세히 설명하지 않음). 응용 프로그램에는 많은 별도의 웹 페이지가 있지만 그 중 두 페이지는 많은 사용자 상호 작용, 대량 데이터를 표시하는 모달, 웹 소켓 연결, 채팅 등과 같이 더 집중되고 매우 무겁습니다.

저는 프로젝트의 수석 아키텍트에 배정 되었기 때문에 최신 웹 프레임 워크에 대해 조사하고 있습니다. 백 엔드의 경우 몇 가지 테스트를 수행하고 Azure SQL 플랫폼을 사용하기로 결정했습니다. 지금까지 Core 2.0을 사용하는 ASP.NET의 개선 사항이 마음에 들었습니다. 특히 이전 버전의 ASP.NET MVC에 비해 Razor 엔진입니다.

"새로운"Razor 대 Angular / React 등에 대한 전문가 의견을 듣고 싶었습니다. 특히 성능에 더 관심이 있습니다. Core 2.0 Razor는 클라이언트 측 렌더링 프레임 워크를 어떻게 유지합니까? 차이가 무시할 만합니까? 우리 앱은 잠재적 인 1,000,000 명의 사용자 (동시 약 100,000 명)를 대상으로합니다.

미리 감사드립니다!


4
" new Razor "는 Razor 페이지를 의미합니까?
Werner

36
그래서 결국 어떤 것을 선택했고 어떻게 진행되고 있습니까?
stt106

5
이 프로젝트를 어떻게 시작 했습니까 (또는 진행하고 있습니까)? 나는 지금 당신과 거의 동일한 상황에 있으며 업데이트를 원합니다!
JLo

10
안녕 JLo와 stt106. 응답하는 데 시간이 너무 오래 걸려 죄송합니다. 결국 Azure SQL을 사용하여 Angular 프런트 엔드와 ASP.NET Core API 백엔드를 사용하게되었습니다. 지금까지 우리에게 큰 도움이되었습니다! React가 더 편하다면 Angular와 비슷한 대체물이 될 것이라고 생각합니다. 매우 쉬운 전환이었던 Angular를 배워야했고 지금은 좋아합니다!
TchPowDog

ASP.Net Core와 Angular / React의 속도 비교는 주제에서 벗어 났습니까? 그것에 대한 정식 답변이있을 수 있습니다. 오늘은 Core 2.2와 곧 3.0이 있습니다.
MikroDel 19

답변:


74

결국 Azure SQL을 사용하여 Angular 프런트 엔드와 ASP.NET Core API 백엔드를 사용하게되었습니다. Core Razor를 테스트했으며 레거시 Razor보다 우수했지만 Angular는 결국 훨씬 더 빠릅니다. 사용자 경험에 관한 한 Angular (또는 React)는 성능면에서 훨씬 우수합니다. Angular의 모델 바인딩 측면은 서버 측 렌더링의 엄청난 이점으로 나타났습니다. 그러나 Razor (또는 일반적으로 서버 측 렌더링)를 사용하면 데이터가 전달되는 한 전반적인 무결성이 향상되고 프런트 엔드에서 백 엔드로 데이터를 더 잘 전환 할 수 있습니다. 프런트 엔드 프레임 워크와 API 사이에는 진정한 단절이 있습니다. 서버로 전달되는 모든 데이터는 유형이 지정된 객체로 캐스팅되어야합니다. 즉, 두 개의 개별 POCO 모델 세트를 관리해야합니다. 이로 인해 서버 개체와 프런트 엔드 개체가 정렬되지 않으면 문제가 발생할 수 있습니다. 현재 Entity Framework Core는 아직 성숙되지 않았으므로 개체 업데이트, 자식 개체를 포함한 개체 쿼리 등에 문제가 있습니다.

전반적으로,이 설정은 지금까지 우리에게 잘 맞았습니다! React가 더 편하다면 Angular와 비슷한 대체물이 될 것이라고 생각합니다. 매우 쉬운 전환이었던 Angular를 배워야했고 지금은 좋아합니다!


5
두 POCO 모델 세트를 동기화하는 한 MVC 모델에서 각도 인터페이스를 생성하는 VS에 대한 정말 유용한 확장이 있습니다. typewritter를
Andy Braham

글쎄, 개인적으로 Angular를 사용해야한다면 DB 부분에 NoSql을 사용합니다.
Venzentx

2
Angular 위에서 ASP.NET 면도기를 선택하는 것을 상상할 수 없습니다. 과거 ASP.NET은 .NET 개발자에게 익숙한 코드를 제공했지만 RAZOR을 사용하면 Angular를 사용하는 것보다 학습 곡선이 더 높습니다. MVC는 HTML에서 로직을 분리합니다.
Mark

1
@Mark 나는 그것을 믿지 않는다. Razor Pages는 특히 데이터 바인딩을 처리하는 방식이 완벽합니다. 그들은 너무 좋아. 그러나 그의 시나리오 각도에 대한 ofcource는 완벽하게 적합합니다.
Mosia Thabo

2
@MosiaThabo, Mark는 Razor Pages에 대해 이야기하는 것이 아니라 Razor에 대해 이야기하고 있습니다. 내 OP가 언급 한 것입니다. 내 원래 게시물에서 나는 Razor Pages (또는 지금은 Blazor라고 불림)를 언급하지 않았습니다. 저는 특히 클라이언트 측 렌더링과 서버 측 렌더링에 대해 이야기했습니다. Razor Pages는 Microsoft의 Angular / React의 풍미이며 Angular 및 React의 장점 때문에 필요하다고 생각합니다.
TchPowDog

49

서버 측에서 Angular / React를 API와 함께 사용하여 :

  • 서버 측에서 HTML 생성 프로세스를 제거하고 CPU를 절약합니다.
  • api는 작은 페이로드 (json)를 생성하고 Razor (html)는 크기가 훨씬 더 크고 지속적인 전체 페이지 다시로드 및 포스트 백 왕복을 만듭니다. 그래서 API와 스파는 대역폭을 절약합니다.
  • API와 스파는 버전 관리, 확장 및 배포 시나리오가 다를 수 있습니다.
  • API를 사용하면 모바일 앱도 지원할 수 있으며 Razor로 시작하는 경우 나중에 API가 필요할 수 있습니다.

그러나 Angular / React를 사용하면 클라이언트에 대해 걱정해야합니다.

  • 클라이언트는 자바 스크립트를 활성화해야합니다.
  • 클라이언트에는 최신 브라우저가 있어야합니다.
  • 클라이언트에는 충분한 강력한 하드웨어가 있어야합니다.
  • SEO

1
두 프레임 워크의 차이점을 이해하고 성능에 더 관심이 많았습니다.
TchPowDog

두 가지 모두에 동일한 pipline이 있지만 면도기 페이지에 대한 벤치 마크가 있는지는 모르겠습니다. 이 링크가 도움이 될 수 있습니다 -ASP.NET Razor 페이지 대 MVC : Razor 페이지는 도구 상자에 어떻게 맞습니까?
Mohsen Esmailpour

1
Razor는 모바일을 지원하므로 나열된 단점은 중요하지 않습니다. 둘 다 자신의 방식으로 빠릅니다. Angular를 선호하지만 둘 다 최적화되어 있습니다. Razor는 MVC와 같은 트리를 사용하지 않음으로써 코드를 최적화합니다. Angular는 클라이언트 측이므로 실제로 트리를 사용하지 않지만 HTML의 데이터를 어느 정도 최적화합니다.
Nick Turner

@NickTurner 스마트 폰에서 웹 페이지를 보는 것뿐만 아니라 완전한 자체 앱으로 이해했습니다. 예를 들어, 변경되지 않은 서버 API에서 데이터를 그대로 가져올 수있는 반면에 Android가 제공하는 기능 (더 나은 애니메이션 지원, 알림, 토스트 메시지 등)을 사용할 수있는 Android 앱
Raphael Schmitz

23

벤치 마크가 없습니다. 하지만 JQuery, Razor, .NET MVC (C #), AJAX를 실행하는 여러 프로젝트가 있습니다. 당신이 다루고있는 규모가 아닙니다.

조언 .. 생각하고 모범 사례를 따르십시오. 유지 관리를 유지하려면 컨트롤러, 뷰, 모델을 더 작고 의미있는 그룹으로 나누십시오. 시작했을 때 모든 것을 하나의 홈 컨트롤러에 넣고 공유 폴더에 수많은 뷰를 넣는 실수를 저질렀습니다. 처음에는 괜찮 았지만 기능 크립이 시작되었을 때 엉망이되어 돌아가서 재 설계하기가 어려웠습니다.

Linq2SQL도 사용합니다. 모든 것에 대해 모델을 만드는 실수를 저질렀 고 쿼리에서 결과 집합을 모델로 반환 할 수 있다는 것을 깨달았습니다. 이런.

.NET MVC로 이동하고 성능에 대해 우려하는 경우 다음과 같은 문제가 발생했습니다.

큰 HTML 블록을 만드는 부분보기를 반환하지 마십시오! 모든 것을 최소화하십시오. 모든 공백을 제거하십시오. 더 작은 ID 이름을 사용하십시오. 가능한 한 가벼운 HTML을 만드는 데 시간을 할애하십시오. JSON을 반환하고 클라이언트가 일부 작업을 수행하도록합니다.

CSS를 개발하는 방법에주의하십시오. 많은 인라인 스타일을 사용하지 말고 나중에 최소화 할 수있는 CSS 파일에 통합하는 시간을 가지십시오.

클라이언트 측 JS도 마찬가지입니다. JS를 부분 뷰 안에 넣는 것이 유혹적입니다. 일을 정리하십시오.

IE에서 렌더링하는 것은 끔찍합니다. 특히 이미지가 많은 경우. 물론 품질을 잃지 않고 가능한 한 많이 이미지를 압축하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.