ASP.NET Core 2.0 Razor 대 Angular / React / etc [닫힌]
우리 팀과 저는 엔터프라이즈 수준 웹 응용 프로그램 개발을 시작하기위한 자금을 받았습니다 (그 기능에 대해 자세히 설명하지 않음). 응용 프로그램에는 많은 별도의 웹 페이지가 있지만 그 중 두 페이지는 많은 사용자 상호 작용, 대량 데이터를 표시하는 모달, 웹 소켓 연결, 채팅 등과 같이 더 집중되고 매우 무겁습니다.
저는 프로젝트의 수석 아키텍트에 배정 되었기 때문에 최신 웹 프레임 워크에 대해 조사하고 있습니다. 백 엔드의 경우 몇 가지 테스트를 수행하고 Azure SQL 플랫폼을 사용하기로 결정했습니다. 지금까지 Core 2.0을 사용하는 ASP.NET의 개선 사항이 마음에 들었습니다. 특히 이전 버전의 ASP.NET MVC에 비해 Razor 엔진입니다.
"새로운"Razor 대 Angular / React 등에 대한 전문가 의견을 듣고 싶었습니다. 특히 성능에 더 관심이 있습니다. Core 2.0 Razor는 클라이언트 측 렌더링 프레임 워크를 어떻게 유지합니까? 차이가 무시할 만합니까? 우리 앱은 잠재적 인 1,000,000 명의 사용자 (동시 약 100,000 명)를 대상으로합니다.
미리 감사드립니다!
결국 Azure SQL을 사용하여 Angular 프런트 엔드와 ASP.NET Core API 백엔드를 사용하게되었습니다. Core Razor를 테스트했으며 레거시 Razor보다 우수했지만 Angular는 결국 훨씬 더 빠릅니다. 사용자 경험에 관한 한 Angular (또는 React)는 성능면에서 훨씬 우수합니다. Angular의 모델 바인딩 측면은 서버 측 렌더링의 엄청난 이점으로 나타났습니다. 그러나 Razor (또는 일반적으로 서버 측 렌더링)를 사용하면 데이터가 전달되는 한 전체 무결성이 향상되고 프런트 엔드에서 백 엔드로 데이터를 더 잘 전환 할 수 있습니다. 프런트 엔드 프레임 워크와 API 사이에는 진정한 단절이 있습니다. 서버로 전달되는 모든 데이터는 유형이 지정된 객체로 캐스팅되어야합니다. 즉, 두 개의 개별 POCO 모델 세트를 관리해야합니다. 이로 인해 서버 개체와 프런트 엔드 개체가 정렬되지 않으면 문제가 발생할 수 있습니다. 현재 Entity Framework Core는 그다지 성숙하지 않았으므로 개체 업데이트, 자식 개체를 포함한 개체 쿼리 등에 문제가 있습니다.
전반적으로,이 설정은 지금까지 우리에게 잘 맞았습니다! React가 더 편하다면 Angular와 비슷한 대체물이 될 것이라고 생각합니다. 매우 쉬운 전환이었던 Angular를 배워야했고 지금은 좋아합니다!
서버 측에서 Angular / React를 API와 함께 사용하여 :
- 서버 측에서 HTML 생성 프로세스를 제거하고 CPU를 절약합니다.
- api는 작은 페이로드 (json)를 생성하고 Razor (html)는 크기가 훨씬 더 크고 지속적인 전체 페이지 다시로드 및 포스트 백 왕복을 만듭니다. 그래서 API와 스파는 대역폭을 절약합니다.
- API와 스파는 버전 관리, 확장 및 배포 시나리오가 다를 수 있습니다.
- API를 사용하면 모바일 앱도 지원할 수 있으며 Razor로 시작하는 경우 나중에 API가 필요할 수 있습니다.
하지만 Angular / React를 사용하면 클라이언트에 대해 걱정할 필요가 있습니다.
- 클라이언트는 자바 스크립트를 활성화해야합니다.
- 클라이언트에는 최신 브라우저가 있어야합니다.
- 클라이언트에는 충분한 강력한 하드웨어가 있어야합니다.
- SEO
벤치 마크가 없습니다. 하지만 JQuery, Razor, .NET MVC (C #), AJAX를 실행하는 여러 프로젝트가 있습니다. 당신이 다루고있는 규모가 아닙니다.
조언 .. 모든 것을 생각하고 모범 사례를 따르십시오. 유지 관리를 유지하려면 컨트롤러, 뷰, 모델을 더 작고 의미있는 그룹으로 나누십시오. 시작했을 때 모든 것을 하나의 홈 컨트롤러에 넣고 공유 폴더에 수많은 뷰를 넣는 실수를 저질렀습니다. 처음에는 괜찮 았지만 기능 크립이 시작되었을 때 엉망이되어 돌아가서 재 설계하기가 어려웠습니다.
Linq2SQL도 사용합니다. 모든 것에 대해 모델을 만드는 실수를 저질렀 고 쿼리에서 결과 집합을 모델로 반환 할 수 있다는 것을 깨달았습니다. 이런.
.NET MVC로 이동하고 성능에 대해 우려하는 경우 다음과 같은 문제가 발생했습니다.
큰 HTML 블록을 만드는 부분보기를 반환하지 마십시오! 모든 것을 최소화하십시오. 모든 공백을 제거하십시오. 더 작은 ID 이름을 사용하십시오. 가능한 한 가벼운 HTML을 만드는 데 시간을 할애하십시오. JSON을 반환하고 클라이언트가 일부 작업을 수행하도록합니다.
CSS를 개발하는 방법에주의하십시오. 많은 인라인 스타일을 사용하지 말고 나중에 최소화 할 수있는 CSS 파일에 통합하는 시간을 가지십시오.
클라이언트 측 JS도 마찬가지입니다. JS를 부분 뷰 안에 넣는 것이 유혹적입니다. 일을 정리하십시오.
IE에서 렌더링하는 것은 끔찍합니다. 특히 이미지가 많은 경우. 물론 품질을 잃지 않고 가능한 한 많이 이미지를 압축하십시오.
참고 URL : https://stackoverflow.com/questions/46231344/asp-net-core-2-0-razor-vs-angular-react-etc
'Development Tip' 카테고리의 다른 글
DriverManager 대신 DataSource를 사용하는 이유는 무엇입니까? (0) | 2020.10.05 |
---|---|
Android에서 Node.Js 실행 (0) | 2020.10.05 |
반짝이는 서버없이 자체 반짝이는 앱 호스팅 및 설정 (0) | 2020.10.05 |
.NET에는 기본 제공 EventArgs가 있습니까? (0) | 2020.10.05 |
코드 우선 엔티티 프레임 워크에서 뷰를 사용하는 방법 (0) | 2020.10.05 |