2011-09-21 4 views
-1

많은 양의 데이터를 처리하는 ASP.Net 응용 프로그램을 만들어야하고 성능이 정말로 중요합니다.ASP.Net - 실적이 우수한 웹 응용 프로그램 만들기

  • GridView, RepeatControl, SQLDataSource 등과 같은 ASP.Net 컨트롤을 사용하는 것이 좋습니다. 이러한 요소가 잘 작동하도록 설계 되었습니까? 아니면 사전 제작 된 요소와 사용하기 쉬운 요소를 사용하여 성능이 저하됩니까?

  • 데이터를 처리하는 적절한 방법은 어느 것입니까? 비즈니스 계층을 만들고 비즈니스 객체를 사용하여 양식을 채 웁니다. 또는 DataTable과 DataSet을 직접 사용할 수 있습니까?

  • 성능 향상에 도움이되는 몇 가지 팁을 알려주십시오.

+0

왜 -1입니까? 왜 가까이? 약간의 의견을 제공하십시오 – aryaxt

+0

하나의 질문에 너무 많은 질문이 너무 많습니다. –

답변

5

가장 큰 조언은 훌륭한 프로그래밍 방법을 사용하여 응용 프로그램을 작성한 다음 프로파일 러를 사용하여 응용 프로그램에서 가장 많은 시간을 차지하는 부분을 확인하는 것입니다. 모든 것을 가능한 한 빨리 진행하기 시작하면 정말로 중요하지 않은 일에 모든 시간을 낭비하게됩니다. 반면에, 코드를 유지 보수 할 수 있고 솔리드 원칙을 따르기 시작하면 몇 가지 코드 만 변경하면 크게 개선 될 수 있습니다.

성능 측면에서 목표가 무엇인지 정의하는 것도 중요합니다. 어떤 시점에서 페이지가 "충분히 빠릅니다"? 실적 목표를 달성하기 위해 노력하지만, 사용자가 한 달에 한 번만 수행하는 작업에서 10 밀리 초를 면도하려는 시도에 뛰어 들지 마십시오. 당신과 사용자 사이의

  1. 라운드 트립이 : 당신이 가장 큰 시간 낭비는 것을 발견 할 것이다 말했다

    .

  2. 사용자와 사용자간에 많은 양의 데이터를 보내고 있습니다.
  3. 사용자와 데이터베이스 간의 왕복 이동.
  4. 데이터베이스에서 많은 양의 데이터 검색.

    1. 사용 MVC : 여기

  5. 위에 나열된 항목을 최적화 할 수있는 몇 가지 일반적인 도움말입니다. 브라우저와 서버간에 최소량의 데이터를주고 받기가 훨씬 쉬워집니다.
  6. 반복적 인 스크립트로 모든 단일 페이지에서 바이트를 낭비 할 필요가 없도록 눈에 잘 띄지 않는 자바 스크립트 기술을 사용하십시오. 자바 스크립트를 최소화하고 캐시 할 수있는 정적 .js 파일에 넣으십시오.
  7. CSS 파일을 사용하여 페이지의 스타일을 지정하십시오. 그것을 최소화하고 캐싱하도록 설정하십시오.
  8. 아이콘의 경우 jquery-ui와 같은 유틸리티를 사용하여 다운로드 할 이미지 파일이 하나뿐입니다.
  9. 적절한 캐싱 및 gzip 기술을 사용하도록 서버를 설정하십시오.
  10. 자주 필요한 데이터를 쉽게 캐시 할 수있는 아키텍처를 사용하십시오.
  11. 데이터 액세스 방법에 현명하십시오. 주어진 요청에 필요한 모든 것을 가능한 한 왕복 적으로로드하고 필요하지 않은 데이터베이스에서 데이터를로드하지 않도록하십시오.
  12. 나는 본질적으로 fdfrye가 그의 대답에 나열한 모든 것에 동의한다.

마지막으로 고려해야 할 사항 중 하나는 Entity Framework의 다음 버전이 컴파일 된 쿼리를 자동으로 캐시하므로 사용자의 추가 작업없이 대부분의 쿼리를 훨씬 빠르게 수행 할 수 있다는 것입니다.

+0

철저한 답변과 칭의. +1 EF 선물 언급. – fdfrye

3

성능면에서 가장 좋은 방법은 ASP.NET MVC를 사용하여 ViewState에서 생성 된 페이지 크기 오버 헤드를 피하는 것입니다.

그 자체로 MVC는 애플리케이션 성능을 향상시키지 않지만, 지난 수 밀리 초 지연을 압축 할 때 ASP.NET WebForms보다 더 많은 융통성을 허용 할 것입니다.

데이터 상호 작용의 경우 그리드 컨트롤 (jqGrid, mvcContribGrid, Microsoft MVC Grid ...)을 임의의 수만큼 사용할 수 있지만 성능면에서는 기본적으로 동일합니다.

컨트롤러 레이어와 별도의 비즈니스 레이어를 만드는 것이 좋습니다 (MVC를 사용하는 경우). 스타일에 따라 비즈니스 계층 또는 모델 클래스 자체에 유효성 검사를 포함 할 수 있습니다.

Entity Framework는 최신 MVC 응용 프로그램에서 데이터 액세스가 이루어지는 한 최선의 방법이지만 "일괄 처리"관점에서 조심해야합니다. 일괄 업데이트/삭제와 관련하여 EF는 여전히 좋지 않습니다.

대량 삽입물은 상당한 성능이 있어야하지만 XML 대량로드와 비교할 때 아무 것도 아닙니다.

필요한 경우, 사용 EF하지만 여전히 (오히려 모든 일반 오래된 ADO.NET 물건을 배선보다) 같은 ObjectContext는을 사용하여 실행할 수있는 매개 변수화 된 쿼리를 수동으로 실행 부부를 ...

+0

-1 : ViewState는 사용 된 오버 헤드 만 발생시킵니다. 예를 들어 읽기 전용 그리드에는 사용하지 않을 것입니다. –

+0

동의하지만, 기본적으로 WebForms 4.0까지는 ViewState 켜기/끄기에 대한 세부적인 컨트롤이 필요하지 않으므로 사용하는 데 필요한 환경과 버전에 따라 다릅니다. 일반적으로 ViewState 또는 HTML을 서버 측 이벤트 핸들러에 연결하는 자바 스크립트 묶음 일지라도, 페이지로드가 많은 서버 측 컨트롤 내용을 제거하는 것이 여전히 원시 성능에 적합한 방법입니다. – fdfrye

+0

죄송합니다. 다시 한 번 잘못되었습니다. DataGrid를 사용했지만 거대한 ViewState가없는 많은 .NET 2.0 응용 프로그램이있었습니다. –

관련 문제