티스토리 뷰

개발/이론

ASP.NET 페이지 Life Cycle

는세 2019. 1. 23. 15:31
반응형

 부끄럽지만 해당 타이틀에 관하여 지금까지 생각해 본 적이 없었다. 일반적인 SDLC만을 알고 있었고, .NET에 대한 생명주기를 따로 다루고 있었는 지 몰랐었지만 이번에 면접을 보면서 알게되었다.

그래서 간략하게 내가 참고했던 자료들을 모아서 블로그에 정리해보고자 한다.


SDLC 란?
Software Development Life Cycle : 소프트웨어 개발 생명 주기
소프트웨어를 처계적으로 개발하고 관리하기 위해서 개발 과정을 단계 별로 나누어 구분한 것


일반적인 6단계는 아래와 같다.
요구사항 분석 - 시스템 명세 - 설계- 구현 - 테스트 - 운영 및 유지보수

필요한 단계로 피드백을 반복 수행 하면서 소프트웨어의 완성도를 높일 수 있다.


1. 요구사항 분석
사용자로부터 문제를 제기 받아서 사용자와 함께 기능, 제약조건, 목표 등을 정의


2. 시스템 명세
시스템이 어떻게 동작하는 지 정의
입력 자료, 처리 내용, 생성되는 출력이 무엇인지 등을 정의


3. 설계
2단계에서 정의된 기능이 실제로 수행될 수 있도록 수행 방법을 논리적(알고리즘)으로 결정
1) 시스템 구조 설계 : 모듈 간의  관계와 구조 설계
2) 프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘 설계
- 종류
(1) 하향식 설계 방식 : 상위 -> 하위 방향 
      상위 단계의 구성요소를 통합하여 테스트한 후에, 각각의 구성요소에 부속된 하위 단계의
      구성 요소를 테스트
(2) 상향식 설계 방식 : 하위 -> 상위 방향
                       최하위 단위 프로그램을 테스트한 후에, 그 상위 단계의 구성 요소를 테스트
3) 사용자 인터페이스 설계 : 사용자가 시스템을 사용하기 위해 보여지는 부분 설계


4. 구현
프로그래밍 언어를 사용하여 실제로 프로그램을 작성하는 단계
프로그래밍 언어, 기법, 스타일, 개발 순서 등을 결정해야 한다.
- 프로그래밍 기법 
1) 구조화 프로그래밍 : 지정문, 조건문, 반복문만 사용하여 3가지 제어 구조로 표현하는 기법
2) 모듈러 프로그래밍 : 프로그램을 여러 개의 작은 모듈로 나누어 계층 관계를 갖도록 구성


5. 테스트
개발한 시스템이 요구사항을 만족하는 지, 예상 결과와 실행 결과가 일치 하는 지, 
오류는 없는 지 등을 검사하여 완성도를 높이는 단계
- 종류
1) 단위 테스트 : 요구 사항 명세서에 있는 기능들이 제대로 수행되는지 테스트
2) 통합 테스트 : 단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 통합적 시행 테스트
3) 인수 테스트 : 완성된 시스템을 인수하기 위해서 실제 자료를 사용한 최종 테스트


6. 유지보수
시스템이 인수되고 설치된 후 일어나는 모든 활동이며, 소프트웨어 생명 주기에서 가장 비용이 큰 기간




ASP.NET 페이지 Life Cycle (수명 주기)란?

클라이언트가 페이지를 요구할 때, 발생하는 일련의 페이지 생성 ~ 소멸 까지의 처리 과정
ASP.NET 페이지가 실행되면 이 페이지는 일련의 처리 단계를 수행하는 수명 주기를 거친다.



- 페이지 수명 주기를 이해해야 하는 이유
Page Event 마다 적절한 로직을 추가하여 원하는 결과를 낼 수 있기 때문

ex ) 공통적으로 상속되는 BasePage 의 OnPreRender() 이벤트에 공통으로 사용하는 js, css, javascript 변수 등을 추가하여 불필요한 중복 소스를 피할 수 있다.



수명주기 6 단계
(1) Init - ViewState 복구 - 게시된 데이터 처리 - (2) Load - 게시 변경 알림 - (3) PostBack - (4) PreRender - ViewState 저장 - (5) Render - (6) Unload



1) Init
페이지 객체 생성 직후 단계
ViewState 값이 복구되기 전이기 때문에, 정확한 컨트롤의 상태는 참조 불가함
초기화 작업을 위주로 함 (이벤트, 동적 로딩 틍...)



* 들여쓰기는 PostBack일 때만 발생한다
2) ViewState 복구 (이벤트 X)
ViewState에 기록된 내용을 바탕으로, 각 컨트롤에 상태를 적용하는 단계
PostBack 일 때 발생하며, 페이지를 처음 요청할 땐 발생하지 않는다


3) 다시 게시된 데이터 처리
폼 전송에 의한 컨트롤 값을 페이지 객체에 적용시키는 단계
일반적으로 PostBack 일 때 발생하며, 페이지를 처음 요청 시 발생 X



4) Load
페이지 객체 및 컨틀돌 로딩 직후 단계
ViewState 값의 복구 직후여서 컨트롤의 상태가 가장 정확하다
가장 코딩을 많이하는 단계 중 하나



5) 게시 변경 알림
이벤트 처리를 위한 단계
페이지를 처음 요청 시 발생 X


6) PostBack
사용자 발생 이벤트 처리 단계
사용자의 행위에 의한 이벤트 핸들러를 실행하는 단계
페이지를 처음 요청 시에는 발생 X



7) PreRender
페이지 내의 컨트롤의 렌더링 하기 전 단계
일반 적으로 처리 순서로 인한 논리적인 문제를 해결하기 위해서 사용한다



8) ViewState 저장
현재 페이지의 객체의 각 컨트롤 상태를 ViewState 로 기록한다



9) Render
페이지 객체 이하 컨트롤의 내용을 클라이언트에게 출력할 HTML로 렌더링 하는 단계



10) Unload
페이지 객체가 소멸하기 직전 단계
페이지 요청 시 무조건 발생한다. (중간 단계에서 이동이 발생해도 처리됨)




 단      계

설     명 

페이지 요청 

 페이지 요청은 페이지 수명 주기가 시작되기 전에 발생
 사용자가 페이지를 요청하면 ASP.NET에서는 페이지를 구문 분석하고 컴파일하여 페이지 주기를 시작할지 여부 또는 페이지를 실행하지 않고 캐시된 버전의 페이지를 응답으로 보낼 수 있는지 여부를 결정

시작 

 시작 단계에서는 Request 및 Response 같은 페이지 속성이 설정
 이 단계에서 페이지는 요청이 포스트백인지 아니면 새 요청인지를 확인하여 IsPostBack 속성을 설정함. 
 또한 UICulture속성을 설정

초기화 

 페이지 초기화 단계에서는 페이지의 컨트롤을 사용할 수 있으며 각 컨트롤의 UniqueID 속성이 설정됨.
 해당하는 경우 마스터 페이지와 테마도 페이지에 적용
 현재 요청이 포스트백인 경우에는 포스트백 데이터가 아직 로드되지 않았고 컨트롤 속성 값이 뷰 상태의 값으로 복원되지 않은 상태

로드 

 로드 단계에서는 현재 요청이 포스트백인 경우 뷰 상태 및 컨트롤 상태에서 복구된 정보와 함께 컨트롤 속성이 로드된다

포스트백 이벤트 처리 

 요청이 포스트백인 경우 컨트롤 이벤트 처리기가 호출됨
 이후에는 모든 유효성 검사기 컨트롤의 Validate 메서드가 호출되어 각 유효성 검사기 컨트롤 및 페이지의 IsValid 속성을 설정

렌더링 

 렌더링에 앞서 페이지와 모든 컨트롤에 대한 뷰 상태가 저장됨
렌더링 단계를 진행하는 동안, 페이지에서 각 컨트롤에 대한 Render 메서드를 호출하여 페이지에 대한 Response 속성의 OutputStream 개체에 출력하는 텍스트 기록기를 제공함

언로드 

 페이지가 완전히 렌더링되어 클라이언트에 전달되고 취소할 준비가 되면 Unload 이벤트가 발생한다. 

이 단계에서는 Response 및 Request 같은 페이지 속성이 언로드되고 정리 작업이 수행됨


MS에서 표로 정리된 .NET 수명주기 내용


참고

https://m.blog.naver.com/PostView.nhn?blogId=kirayamato4&logNo=100208915677&proxyReferer=https%3A%2F%2Fwww.google.com%2F

http://blog.jakeymvc.com/five-reasons-to-use-mvc/

https://useful-coding-dictionary.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%88%98%EB%AA%85-%EC%A3%BC%EA%B8%B0

https://hsw85.tistory.com/entry/1-ASPNET-%EC%88%98%EB%AA%85%EC%A3%BC%EA%B8%B0

반응형
댓글