your programing

ASP.NET MVC 퍼포먼스

lovepro 2023. 4. 22. 22:31
반응형

ASP.NET MVC 퍼포먼스

ASP라는 엉뚱한 말을 몇 개 발견했어요.NET MVC는 ASP보다 30배 빠릅니다.NET Web Forms.실제 성능 차이는 무엇이며, 이는 측정되었으며, 성능상의 이점은 무엇입니까?

ASP로부터의 이직을 검토하기 위해서입니다.ASP로의 NET Web Forms.NET MVC

결론을 도출하는 데 필요한 확장성 및 성능 테스트는 아직 수행하지 않았습니다.ScottGu가 잠재적인 성능 목표에 대해 논의한 것 같습니다.베타 및 RTM으로 이행함에 따라 내부적으로 더 많은 성능 테스트를 실시할 예정입니다.하지만 성능 테스트 결과 공개에 대한 우리의 방침은 잘 모르겠습니다.

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

A) WebForms 어플리케이션의 실장 방법, B) MVC 어플리케이션의 실장 방법에 따라 크게 달라지기 때문에 확실하게 대답하기 어려운 질문이라고 생각합니다.MVC는 "원시" 형태로 WebForms보다 빠를 가능성이 높지만, 수년에 걸친 툴과 경험으로 인해 고속 WebForms 애플리케이션을 구축하기 위한 많은 기술이 개발되었습니다.선임 ASP라면 기꺼이 내기를 걸겠습니다.NET 개발자는 MVC 애플리케이션의 속도에 필적하는 WebForms 애플리케이션을 생성하거나 최소한 무시할 수 있는 차이를 달성할 수 있습니다.

진정한 차이는 @tvanfosson이 제안했듯이 테스트 가능성과 깨끗한 SoC에 있습니다.성능 향상이 주요 관심사라면, WebForms에서 출항하여 MVC에서 재구축을 시작하는 것은 좋은 이유가 아니라고 생각합니다.적어도 WebForms를 최적화하는 데 사용할 수 있는 기술을 시도하기 전에는 안 됩니다.

보기 상태를 없애고 제출한 출력으로 프로그램적으로 작업할 수 있도록 하는 것만으로 페이지 하나를 2MB 페이로드에서 200k로 줄였습니다.

처리량은 같았지만 크기만으로도 초당 연결 수와 요청 속도가 크게 향상됩니다.

Web Forms가 본질적으로 느리거나 자원을 많이 쓴다고 생각하는 많은 사람들이 잘못된 곳에 책임을 떠넘기고 있다고 생각합니다.웹폼 앱을 최적화하기 위해 10번 중 9번은 앱 작성자가 뷰스테이트의 목적을 오해하는 경우가 너무 많습니다.뷰스테이트가 완벽하다고 말하는 것은 아니지만, 그것을 남용하는 것은 너무 쉽다.그리고 이 남용은 뷰스테이트의 팽창을 야기하고 있다.

이 기사는 내가 이러한 학대의 많은 부분을 이해하는데 도움이 될 수 있는 가치가 있었다.https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

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

테스트 결과 MVC에서 요구량이 2배에서 7배 더 많았지만 웹 양식 앱을 어떻게 만드느냐에 따라 다릅니다.서버 측 제어 없이 "hello world" 텍스트만 있으면 MVC 속도가 약 30~50% 빨라집니다.

MVC의 진정한 "성능" 향상은 애플리케이션의 테스트 가능 표면을 증가시키는 것입니다.WebForms에서는 테스트하기 어려운 어플리케이션이 많이 있었습니다.MVC에서는 테스트 가능한 코드의 양이 기본적으로 2배로 증가합니다.기본적으로 쉽게 테스트할 수 없는 것은 레이아웃을 생성하는 코드뿐입니다.뷰에서 실제로 사용되는 데이터를 채우는 로직을 포함하여 모든 비즈니스 로직과 데이터 액세스 로직을 테스트할 수 있게 되었습니다.페이지 라이프 사이클이 대폭 심플화되어 웹 프로그래밍에 적응하기 쉬워지는 등 퍼포먼스도 향상될 것으로 기대되지만, 동일하거나 조금 느리더라도 품질적인 관점에서 전환할 가치가 있습니다.

여기서의 문제는 ASP가 아무리 빨라도 문제인 것 같습니다.Net MVC는 기존 웹 양식과 달리 대부분의 시간이 데이터베이스에 있기 때문에 차이가 없습니다.대부분의 경우 웹 서버는 0~10%의 CPU 사용률로 데이터베이스 서버에서 대기하고 있습니다.웹 사이트에서 조회 수가 매우 많고 데이터베이스 속도가 매우 빠르지 않으면 큰 차이를 느끼지 못할 것입니다.

제가 찾을 수 있는 유일한 구체적인 숫자는 초기 ASP에서 나온 것입니다.NET MVC 개발은 다음 포럼 스레드에서 이루어집니다.

http://forums.asp.net/p/1231621/2224136.aspx

Rob Connery는 ScottGu가 ASP를 주장했다는 진술을 어느 정도 확인했습니다.NET MVC는 초당 8000개의 요구를 처리할 수 있습니다.

제프와 그의 팀원들이 이 사이트를 개발하면서 힌트를 줄 수 있을지도 몰라.

일반적인 의견과는 달리 최적화된 웹 양식 사용은 원시 성능 측면에서 MVC를 완전히 죽입니다.웹 양식은 MVC보다 훨씬 오래 html을 제공하는 작업에 대해 매우 최적화되어 있습니다.

메트릭은 http://www.techempower.com/benchmarks/ #section=data-r7&hw=i7&test=db에서 이용할 수 있습니다.

모든 비교 MVC는 목록의 하위-중간/하위-상위 순위에 포함되며 최적화된 웹 양식 사용은 상위-중간/상위 순위에 포함됩니다.

www.microsoft.com은 MVC가 아닌 웹 폼을 통해 이러한 메트릭에 대해 매우 진지하게 검증되었습니다.경험적으로 더 빨랐다면 MVC를 선택하지 않았을 거라고 믿는 사람이 있나요?

대답할 방법이 없어요.MVC는 기본적으로 Web Forms 뷰 엔진을 사용하며, 원하는 수의 커스텀뷰 엔진을 사용하도록 구성할 수 있으므로 성능을 비교하려면 보다 구체적으로 설명해야 합니다.

1년 전쯤 MVC에서 일을 시작했는데 감명받았지만 감명받지는 못했습니다.

나는 ASP에 관한 모든 악의 근원으로 보는 것을 싫어한다.인터넷. 이래서 내가 안 쓰는 거야. 솔직히 말하면 왜 네가 쓰겠어?

기본적으로 ASP를 수강했습니다.NET MVC Framework의 컨셉과 독자적인 방법으로 구축.그래도 몇 가지 바꿨어요.컨트롤러 래핑 코드, 즉 동적 재컴파일을 중심으로 한 URL 라우팅 코드를 만들었습니다.

ASP라고까지 말할 수 있습니다.사용 방법에 따라 NET MVC 응용 프로그램이 더 빨라집니다.WebForms를 완전히 포기하면 ASP 덕분에 더 빨라집니다.NET 라이프 사이클 및 객체 모델은 어마어마합니다.

글을 쓸 때는 군대를 인스턴스화하고...아니요, 뷰 렌더링에 참여할 다수의 객체입니다.이것은 ASPX 페이지 자체의 동작의 최소량을 나타내는 장소보다 느려집니다.(Visual Studio의 ASPX 페이지 지원은 충분하기 때문에 View Engine Abstraction은 신경 쓰지 않지만 기본적으로는 모든 ASP로서 WebForms를 완전히 삭제했습니다.NET 프레임워크는 코드 블러트 또는 어플리케이션에 접속되어 있는 것을 변경할 수 없기 때문에 발생합니다).

동적 재컴파일(시스템)에 의존하는 방법을 찾았습니다.반사.방출)은 필요할 때마다 특수 목적의 객체 및 코드를 방출합니다.이 코드의 실행은 반사보다 빠르지만 처음에는 반사 서비스를 통해 구축됩니다.이를 통해 MVC 플레이버 프레임워크는 뛰어난 퍼포먼스를 얻을 수 있을 뿐만 아니라 매우 정적인 타이핑이 되었습니다.문자열과 이름/값 쌍 컬렉션은 사용하지 않습니다.대신 커스텀 컴파일러 서비스는 참조 유형이 전달된 컨트롤러 액션에 폼 포스트를 다시 씁니다.이면에는 많은 일들이 일어나고 있지만 이 코드는 WebForms나 MVC Framework보다 훨씬 더 빠르고 빠릅니다.

또한 URL을 쓰는 것이 아니라 나중에 어떤 컨트롤러 액션을 호출해야 하는지 알려주는 URL로 변환되는 람다 식을 씁니다.이것은 특별히 빠르지는 않지만 URL이 깨지는 것보다 낫다.리소스를 정적으로 입력하고 개체를 정적으로 입력하는 것과 같습니다.정적으로 입력된 웹 응용 프로그램?그게 내가 원하는 거야!

저는 더 많은 사람들이 이것을 시도해 볼 것을 권하고 싶습니다.

비주얼 스튜디오를 사용하여 만든 프로젝트입니다.하나는 mvc4 템플릿이고 다른 하나는 WebForm(트랜디셔널)입니다.그리고 WCAT로 부하테스트를 했을 때, 이것이 그 결과입니다.

MVC4는 WebForms보다 꽤 느리네요, 어떤 아이디어라도 있나요?

여기에 이미지 설명 입력

MVC4

  • 약 11 rps를 얻을 수 있다
  • rps는 2-cpu 서버 또는 4-cpu 서버 모두 매우 낮음

여기에 이미지 설명 입력

웹 양식(aspx)

  • 2500rps를 초과할 수 있습니다.

  • 퍼포먼스 킬러는 MVC Bata나 RC의 버그로 판명되었습니다.그리고 번들을 제거하면 성능이 향상됩니다.이 문제는 최신 버전으로 수정되었습니다.

퍼포먼스는 무엇을 하고 있느냐에 따라 달라집니다.통상 MVC가 asp.net보다 고속인 것은 주로 Viewstate가 존재하지 않기 때문입니다.또, MVC는 디폴트로는 포스트백보다 콜백과 함께 동작하기 때문입니다.

웹폼 페이지를 최적화하면 MVC와 동일한 성능을 얻을 수 있지만 많은 작업이 필요합니다.

또, MVC(및 Webform)에 있어서도, css와 javascript의 조합이나 최소화, 이미지의 그룹화, 스프라이트로의 사용등의 Web 사이트의 퍼포먼스의 향상에 도움이 됩니다.

웹 사이트의 퍼포먼스는 아키텍처에 따라 크게 달라집니다.문제를 잘 분리하여 깔끔하게 만들면 보다 깔끔한 코드와 퍼포먼스 향상에 대한 더 나은 아이디어를 얻을 수 있습니다.

이 템플릿 「Neos-SDI MVC 템플릿」을 참조해 주세요.이 템플릿은 기본적으로 퍼포먼스가 대폭 향상된 깨끗한 아키텍처를 만듭니다(MvcTemplate 웹사이트 참조).

여기에 이미지 설명 입력

몇 가지 기본 코드로 소규모 VSTS 로드 테스트를 실시하여 ASP를 찾았습니다.ASP에 비해 NET MVC 응답 시간이 2배 빠릅니다.NET Web 폼위는 플롯을 첨부한 그래프입니다.

이 부하 테스트 실험의 자세한 내용은 이 CP 기사 https://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari를 참조하십시오.

테스트는 VSTS 및 텔레릭 부하 테스트소프트웨어를 사용하여 다음 사양으로 실시되었습니다.-

사용자는 25명의 사용자를 로드합니다.

테스트 실행 시간은 10분입니다.

머신 구성 DELL 8GB RAM, Core i3

프로젝트는 IIS 8에서 호스트되었습니다.

MVC 5를 사용하여 프로젝트를 만들었습니다.

네트워크 LAN 접속이 상정되었습니다.따라서 이 테스트에서는 현시점에서는 네트워크 지연은 고려되지 않습니다.

테스트에서 브라우저는 Chrome과 Internet Explorer를 선택했습니다.

테스트 중에 얻은 다중 판독치 평균 미지의 이벤트에 대한 판독치. 7개의 판독치와 모든 판독치는 판독치 1, 2 등으로 이 문서에 게재되어 있습니다.

언급URL : https://stackoverflow.com/questions/43743/asp-net-mvc-performance

반응형