[asp.net] ASP.NET MVC 성능

ASP.NET MVC가 ASP.NET WebForms보다 30 배 빠르다는 야생 발언을 발견했습니다. 실제 성능 차이가 무엇인지, 이것이 측정되었으며 성능 이점은 무엇입니까?

이것은 ASP.NET WebForms에서 ASP.NET MVC로 이동하는 것을 고려하는 데 도움이됩니다.



답변

결론을 내리는 데 필요한 유형의 확장 성 및 성능 테스트를 수행하지 않았습니다. ScottGu가 잠재적 인 성능 목표에 대해 논의하고 있었던 것 같습니다. 베타 및 RTM으로 이동함에 따라 내부적으로 더 많은 성능 테스트를 수행 할 것입니다. 그러나 성능 테스트 결과 게시에 대한 Google 정책이 무엇인지 잘 모르겠습니다.

어쨌든 이러한 테스트는 실제 응용 프로그램을 고려해야합니다.


답변

A) WebForms 응용 프로그램을 구현하는 방법 및 B)에 따라 달라지기 때문에 이것은 확실히 대답하기 어려운 질문이 될 것이라고 생각합니다. 을 구현하는 방법 MVC 응용 프로그램을 구현하는 방법 합니다. “원시”형태에서 MVC는 WebForms보다 빠를 가능성이 있지만 수년 및 수년간의 도구와 경험을 통해 빠른 WebForms 응용 프로그램을 구축하기위한 여러 기술을 만들어 냈습니다. 저는 선임 ASP.NET 개발자가 MVC 응용 프로그램의 속도에 필적하는 WebForms 응용 프로그램을 만들거나 최소한 무시할만한 차이를 얻을 수 있다고 확신합니다.

@tvanfosson이 제안한 실제 차이점 은 테스트 가능성과 깨끗한 SoC입니다. 성능 향상이 가장 큰 관심사라면 WebForms로 이동하여 MVC에서 재 구축을 시작하는 것이 큰 이유가 아니라고 생각합니다. 적어도 WebForms를 최적화하기 위해 사용 가능한 기술을 시도 할 때까지는 아닙니다.


답변

viewstate를 제거하고 제출 된 출력으로 작업 할 수 있도록 프로그래밍 방식으로 견딜 수있게함으로써 내 페이지 중 하나를 2MB 페이로드에서 200k로 줄였습니다.

처리량이 동일하더라도 크기만으로도 초당 연결과 요청 속도가 크게 향상됩니다.


답변

WebForms가 본질적으로 느리거나 리소스 집약적이라고 생각하는 많은 사람들이 잘못된 위치에 책임을지고 있다고 생각합니다. 웹 양식 앱을 최적화하기 위해 10 점 만점에 9 번은 앱 작성자가 뷰 스테이트의 목적을 오해하는 곳이 너무 많습니다. 나는 viewstate가 완벽하다고 말하는 것이 아니라 그것을 남용하기가 너무 쉽습니다. 그리고 이것이 비대해진 viewstate 필드를 일으키는 원인이되는 것은 바로이 남용입니다.

이 기사는 이러한 많은 학대를 이해하는 데 도움이되지 않았습니다. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

MVC와 WebForms를 올바르게 비교하려면 두 앱이 모두 아키텍처를 올바르게 사용하고 있는지 확인해야합니다.


답변

내 테스트는 MVC에서 초당 2 배에서 7 배 더 많은 요청을 보여 주지만 웹 양식 앱을 빌드하는 방법에 따라 다릅니다. 서버 측 제어없이 “hello world”텍스트 만 있으면 mvc가 약 30-50 % 더 빠릅니다.


답변

나에게 MVC의 진정한 “성능”향상은 응용 프로그램의 테스트 가능한 표면을 증가시키는 것입니다. WebForms에는 테스트하기 어려운 많은 응용 프로그램이있었습니다. MVC를 사용하면 테스트 할 수있는 코드의 양이 기본적으로 두 배가됩니다. 기본적으로 쉽게 테스트 할 수없는 것은 레이아웃을 생성하는 코드뿐입니다. 뷰에 사용 된 실제 데이터를 채우는 로직을 포함하여 모든 비즈니스 로직 및 데이터 액세스 로직을 이제 테스트 할 수 있습니다. 더 성능이 좋을 것으로 기대하지만 페이지 수명주기가 크게 단순화되고 웹 프로그래밍에 더 잘 적용됩니다.


답변

여기서 문제는 ASP.Net MVC가 이전 웹 양식보다 얼마나 빠르더라도 차이를 만들지 않을 것입니다. 대부분의 시간이 데이터베이스에 있기 때문입니다. 대부분의 경우 웹 서버는 데이터베이스 서버에서 대기하는 것만으로도 CPU 사용량이 0 ~ 10 %입니다. 웹 사이트에서 매우 많은 수의 히트가 발생하고 데이터베이스가 매우 빠르지 않으면 큰 차이를 느끼지 못할 것입니다.