본문 바로가기

프로그래밍언어/ASP.NET

asp.net 페이지 및 응용 프로그램의 구조


 shakeJ 

참고 문헌 : 뇌를 자극하는 asp.net

 

1. 웹 폼이란 ?

 

ASP.NET의 대부분의 프로그래밍은 웹폼 에서 이루어진다.

웹은 .ASPX파일(즉 ASP.NET 페이지)과 같은 개념으로써 프로그래밍을 위한 Form이라고 생각하면 된다. 웹폼 전에는 윈폼이라는 개념이 있었다.

이 윈폼을 웹에 적용 시킨 것이 웹폼이라 한다.

크게 표현부분(디자인)과 코드부분(내부 로직)으로 이루어져 있다.

위는 [소스뷰]이고 밑은 [디자인 뷰]로써 웹브라우저에 보는 것과 같이 보이게 된다.

 

-웹폼 코드모델

웹폼에는 두가지 코드 모델이 있다

1. 단일 파일 페이지 모델

2. 코드 숨김 페이지 모델

 

단일 파일 페이지 모델은 웹폼의 코드 부분이 표현 부분이 .ASPX 파일에 같이 놓여지고,

코드 숨김 페이지 모델은 표현부분이 .ASPX에 놓여지고, 내부로직 부분은 .cs에 저장이 된다.

이렇게 protected … 부분이 cs부분으로 가느냐 아니면 aspx파일에 함께 있느냐 차이이므로

성능이나 기능에는 두 개모두 차이가 없다.

다만 그 장단점으로는,

1. 단일 코드 페이지

- 코드가 많지 않을 경우 한곳에서 확인이 가능하므로 쉽게 분석이 가능하다.

- 다른 개발자에게 배포하거나 보내기가 쉽다.

- 파일간의 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있다.

2. 코드 숨김 페이지

- 코드 숨김 페이지는 코드 부분과 표현 부분을 완전히 구분한다. 따라서 개발자가 코드를 작성하는 동안 웹 디자이너는 태그로 디자인 작업이 가능하다.

- 개발자와 웹디자이너의 혼선을 줄일수 있다.

- 코드를 여러 페이지에 재사용이 가능하다.

이렇게 cs.파일과 디자인파일이 나누어져 있다.

단일 파일 페이지 모델은

이렇듯 파일추가에서 웹폼을 선택하면

마지막에 웹폼.aspx 파일 하나만의 생성되는 것을 볼 수 있다.

 

 

예제 5-1

이 파일을 보면 Load부분에 웹 폼의 코드 부분에 특정 문자열을 출력하는 코드를 작성했다. 이는 단일 페이지 모델이다. (당연히 한 페이지 안에 출력하는 코드와 표현부분이 함께 있기 때문에)

 

 

코드 숨김 페이지 모델을 보게 되면

윗 부분에 CodeFile이라는 cs파일을 불러올 수 있게 작성을 해주게 되고, script 부분은 사라지게 된다.

 

 

 

02. 웹 폼 이벤트

이벤트와 이벤트 처리기

1. 이벤트란 ?

사전적 의미 '사건' 일어난 일' '행사'

ASP.NET은 여러 상황에 맞게 미리 정의 된 이벤트 집합을 개발자에게 제공한다.

예를 들어 Button 서버 컨트롤은 Click 이벤트를 제공하는데 사용자가 Button 서버 컨트롤을 마우스로 클릭하면 Click이벤트가 일어난다.

 

이벤트 처리기는 이벤트에 바인딩되는 메서드 이다. 이벤트가 발생하면 이벤트와 연결된 이벤트 처리기의 코드가 실행된다. Load이벤트가 발생했을 때 Page_Load()라는 이벤트 처리기가 실행 된다.

 

protected void Page_Load(object sender, EventArgs e)

이벤트가 발생한 개체를 나타내는 개체(sender)이며, 다른 하나는 이벤트 관련 정보를 포함하는 이벤트 개체(e)입니다. 두번째 매개변수는 EventArgs형식이지만 서버 컨트롤들은 나름대로의 고유 형식을 사용합니다.

 

- Load이벤트

웹 폼은 웹 폼 고유의 이벤트를 가지고 있는데 그 중 가장 사용 빈도가 높은 것이 Load이벤트를 사용한다. 예를 들어, 회원 정보 수정 페이지 같은 경우 이 페이지가 로드 될 때 회원 가입 시 입력 했던 정보들을 데이터베이스 에서 가져 온후 보여주어야 하는데 가장 적당한 시점이 Load이벤트가 발생하는 시점이다.

 

- 페이지 실행 주기

페이지가 로드 될 때 발생 할 수 있는 이벤트에는 Load외에도 유심히 봐야 할 이벤트가 있는데 Init와 PreRender이다.

LoadViewState이벤트는 서버 컨트롤의 정보를 가지고 있는 View State라는 것을 복원하는 이벤트이다. Init이벤트는 LoadViewState이벤트 이전에 발생하는 이벤트이다.

반면 Load, PreRender이벤트는 서버 컨트롤 개체를 사용할 수 있다. (LoadViewState는 불가능)

 

 

3. 다시게시(PostBack)와 페이지간 게시(Cross-Page Posting)

- 다시 게시

사용자의 브라우저는 서버에서 처리된 결과를 HTML과 클라이언트 스크립트로 받아서 보여주는 역할만 할 뿐이다. 이 때 다시게시는 입력된 정보나 변경된 정보는 서버로 다시 전송 되어 ASP.NET은 전송된 정보를 기초로 서버에서 처리한 후 그 결과를 사용자에게 다시 되돌려준다. 이렇게 자신을 타겟으로 하여 현재 페이지를 다시 서버로 전송되는 프로세스를 다시 게시라고 한다

 

버튼 클릭하면,

 

이렇게 코딩을 해놓으면 버튼을 누르면 다시게시 하게 된다.

 

버튼을 누르게 되면 입력해놓은 텍스트가 뜨게 된다.