4.10.3 마무리
실습은 항상 ‘책을 따라 연습(타이핑) → 해당 내용을 웹 브라우저로 실행해서 결과 확인 → 소스 분석’ 순서로 진행하길 바란다. 본문의 내용을 한 번 보고 끝낼 것이 아니라 전체 개념을 학습한 다음 앞부분의 내용을 다시 살펴봐야 한다. 실습은 이 책을 학습한 뒤에 이해할 수 있는 내용이 많기 때문에 나중에는 처음에 알지 못했던 내용을 깨달을 수 있을 것이다. 지금 당장 이해가 되지 않는 부분이 있더라도 다음 단계로 진행하면서 여러 번 반복 학습하는 것을 추천한다.
Note Application과 Session을 사용한 상태 관리
ASP.NET은 Application과 Session을 사용해 웹 사이트 전체에서 사용할 수 있는 전역 변수 개념을 도입했다. Application 변수를 선언하고 값을 입력하면 공통(Public) 성격을 가지는 전역 변수가 생성되는데 웹 서버에 같은 이름으로 단 한 개만 생성된다. 예를 들어 Application["변수명"] = "값"; 형식으로 선언되는데 A 사용자가 Application["Count"] = 100;으로 초기화하면 B 사용자가 Application["Count"]를 출력했을 때 100이 출력되는 형태로 Application 변수의 값은 모든 사용자에게 똑같이 공유된다.
Session 변수를 선언하면 전용(Private) 성격을 가지는 전역 변수가 생성되는데 웹 서버에 사용자마다 같은 이름의 변수를 여러 개 생성할 수 있다. Session["변수명"] = "값"; 형식으로 선언할 수 있으며 A 사용자가 Session["Count"] = 100;으로 초기화하면 B 사용자가 Session["Count"]를 출력했을 때 에러(선언하지 않음)가 발생하거나 NULL 값이 출력될 수 있다. 여기서 세션 전역 변수는 사용자마다 생성되므로 세션 하나당 1KB 정도의 값만 보관해도 1000명이면 1000KB, 즉 1MB 정도의 메모리를 잡아먹는다는 데 주의해야 한다. 그래서 세션 전역 변수는 꼭 필요한 곳에서만 사용해야 한다.
Application과 Session 전역 변수는 아무 곳에서나 선언하고 사용해도 되지만, 일반적으로 웹 프로젝트 루트에 위치하는 Global.asax에서 관리한다. Global.asax 파일은 웹 사이트에 접근하는 모든 사용자에 대한 판단을 관리하는 관문 역할을 하는 게이트웨이 파일이다. 응용 프로그램과 관련된 유용한 이벤트 처리기를 담고 있는데 다음 네 가지가 가장 많이 사용된다.
• Application_Start(): 웹 사이트를 하나 만들었을 때 사용자가 처음 방문 시 실행되는 메서드
• Session_Start(): 사용자 한 명이 방문할 때마다 실행되는 메서드
• Session_End(): 사용자 한 명이 마지막 요청(접속) 후 20분 뒤에 실행되는 메서드
• Application_End(): 웹 사이트에 마지막 사용자가 나간 후 20분 뒤에 실행되는 메서드