-
asp.net 의 웹폼에 대하여...NET 정리 2010. 2. 25. 16:30
◆ 웹 폼웹폼(Web Form)은 ASP.NET의 기본 철학이라고 할 수 있는 프로그래밍이 가능한 웹 페이지(Programmable Web)를 구성하는데 사용되는 핵심적인 기술이며, 이를 통해서 마치 Visual Basic으로 윈도 애플리케이션을 만드는것과 동일한 방법으로 웹 애플리케이션을 작성할 수 있게 되었다.
원래 폼(Form)이란 용어는 Visual Basic이나 Delphi같은 4GL(4th Generation Language)개발 톨에서 프로그래밍을 위한 캔버스로 사용되는 윈도를 의미하며, 이 윈도 폼에 컨트롤을 그래그 앤 드롭으로 배치시키고 발생되는 이벤트에 적절한 핸들러 함수를 작성함으로써 애플리케이션을 개발하게 된다.
'웹 폼'은 'ASP.NET페이지'와 같은 용어로 사용된다. 인터넷 환경에서 정보를 요청한 클라이언트의 웹 브라우져에 보내져야 할 결과는 어차피 HTML태그로 이루어진 텍스트 기반의 코드이다. 따라서 웹 폼은 사용자에게 정보를 전달하기 위해 HTML을 이용하고 애플리케이션 로직을 구현하기 위해 서버측 코드(server side code)를 사용하는 기술이라고 정의할 수 있겠다.
◆ 웹 폼의 구성1. 표현 부분(시각적인 부분)
태그, 서버 컨트롤, 정적 텍스트와 같이 웹 폼을 시각적으로 나타낼 수 있는 요소가 위치한다2. 코드 부분(내부 로직 부분)
.NET 언어를 통해 작성한 내부 로직이 위치한다◆ 웹 폼 코드 모델
웹 폼은 사용자 인터페이스를 담당하는 컨텐츠(Contents)부분과 프로그램 로직을 담당하는 서버코드(code) 부분으로 구성된다.
1. 단일 파일 페이지 모델( Single-file Page Model)
코드 부분과 표현 부분이 .aspx 파일(동일한 웹 폼)에 같이 존재하는 형태
코드와 태그를 한 곳에서 확인할 수 있으므로 쉽게 웹 폼을 분석할 수 있다
파일간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있다
코드부분은 반드시<script runat="server">메롱...^^v~</script> 태그 사이에 위치해야 한다------------------------------------
<script runat="server">
//내부로직
</script>
코드 부분 (Logic)------------------------------------
<html>
<body>
...
</body>
</html>
표현 부분------------------------------------
Single-file Page Model 장점
코드가 많지 않을 경우 코드와 태그를 한 곳에서 확인할 수 있으므로 쉽게 웹 폼을 분석할 수 있습니다.
단일 파일 페이지 모델로 작성한 웹 폼은 파일이 하나뿐이므로 다른 개발자에게 배포하거나 보내기가 쉽습니다.
파일간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있습니다.
2. 코드 숨김 페이지 모델 ( Code-Behind Page Model )
ASP.NET에서 컨턴츠와 코드를 분리하는게 가능한 이유는 서버 코드 상에서 제어할 수 있는 서버 컨트롤이 제공되기 때문이다. 이러한 서버 컨트롤은 크게 HTML 서버 컨트롤과 웹 폼 컨트롤로 구분된다.
표현 부분은 .aspx 파일 , 코드 부분은 다른 클래스 파일(.cs파일)에 놓여지는 형태
코드 부분과 표현 부분을 완전히 구분하기 때문에 개발자가 코드를 작성한느 동안 웹 디자이너는 태그로 디자인 작업을 진행할 수 있다.
코드를 여러 페이지에 재 사용할수 있다.------------------------------------
<html>
<body>
...
</body>
<html>.aspx 파일
------------------------------------
using System;
using System.Data;
...
public partial class Default_:page
{
//내부로직
}.cs 파일
------------------------------------코드 비하인드에서 한 가지 짚고 넘어가야 할 것은 컨텐츠부인 *.aspx 파일과 코드부인 *.aspx.vb 혹은 *.aspx.cs파일의 관계이다.짝으로 존재하기 때문에 수평적인 관계라고 이해 하시겠지만 실제는 *.aspx파일은 *.aspx.vb 나 *.aspx.cs로부터 클래스를 상속받는 수직적인 관계이다.Code-Behind Page Model 장점
코드 숨김 페이지는 코드 부분과 표현 부분을 완전히 구분합니다. 따라서 개발자가 코드를 작업하는 동안 웹 디자이너는 태그로 디자인 작업을 진행할 수 있습니다.
웹 디자이너에게 코드를 노출하지 않으므로 개발자와 웹 디자이너간의 혼선을 줄일 수 있습니다.
코드를 여러 페이지에 재사용 할 수 있습니다.
※ VS 2005 에서 웹 사이트를 생성하면 기본적으로 Default.aspx 파일과 Default.aspx.cs 파일을 제공한다
◆ 웹 폼의 주요 기술적인 내용
▶ 웹 폼은 서버상에서 동적으로 웹 페이지를 생성할 수 있는 프로그래밍 모델로서 제시된 ASP.NET프로그래밍 기술이다.▶ 웹 폼은 어떠한 웹 브라우져에서도 실행될 수 있으며 자동으로 클라이언트의 타입을 판단해서 적절한 스타일과 레이아웃의 HTML코드를 렌더링한다.
▶ 웹 폼은 Visual Basic.NET, C#, Managed C++, Jscript.NET등 .NET프레임워크를 지원하는 모든 언어를 이용해서 개발될 수 있다.
▶ 웹 폼은 관리적 실행환경, 데이터 타입의 안정성, 상속 등과 같은 .NET프레임워크의 모든 장점을 제공한다.
▶ Visual Studio.NET은 웹 폼을 디자인하고 프로그래밍하기 위한 최적의 RAD 개발 환경을 제공한다.
▶ 웹 개발에서 윈도 애플리케이션 개발처럼 서버 기반의 컨트롤들이 제공된다.
▶ 웹 폼은 사용자 정의 컨트롤(Custom Control)과 서드 파티 컨트롤을 이용해서 확장할 수 있다.
◆ partial 클래스의 특징
1. ASP.NET 2.0 코드 숨김 페이지 모델에서는 C#2.0에 추가된 partial 형식이라는 새로운 언어기능을 사용하여
.net 1.x 버전에서 가지고 있던 상속의 복잡성, 컴파일의 복잡성 문제를 한번에 해결했다.
2. partial 형식은 클래스(또는 구조체, 인터페이스)를 두 개 이상의 소스 파일로 분할할 수 있는 기능을 말한다.
3. partial 클래스로 분할된 여러 클래스는 컴파일 시 컴파일러에 의해 합쳐진다.
4. ASP.NET 2.0의 코드 숨김파일(.cs 파일)은 partial 클래스로 정의된다.
5. parrtial 클래스로 만들어진 코드 숨김 파일에는 웹 폼으로 사용된 서버 컨트롤에 대한 변수와 이벤트 바인딩 관련 구문을 추가할 필요가 없으며 서버 컨트롤 변수와 이벤트 바인딩 관련 구문은 런타임에 컴파일러에서 모두 처리해 준다. (cf. 1.x 에서는 다 작성해줘야 함)
결과적으로 코드 숨김 파일에는 개발자가 생각하는 논리만 깔끔하게 작성하면 된다.
※ 코드 숨김 페이지 모델을 지원하지 않는 .NET 언어 : J#과 같이 partial 클래스를 지원하지 않는 .NET 언어를 사용하면 코드 숨김 페이지 모델의 웹 폼을 만들 수 없다.◆ 웹폼 이벤트의 주요 실행 순서
1. Init 이벤트
웹 폼 페이지가 요청 되었을 때 처음 발생하는 이벤트로 서버 컨트롤들을 초기화하는 역활을 담당
2. LoadView State 이벤트
서버 컨트롤의 정보를 가지고 있는 뷰 상태(View State)라는 것을 Load(복원)하는 이벤트
LoadView State 이벤트을 기준으로 서버 컨트롤 사용 여부 구분
----------------------------------------------------------------------------------
3. Load 이벤트
컨트롤의 초기화가 끝난후 웹폼 페이지와 서버 컨트롤들이 로드 될때 발생하는 이벤트
4. 서버 컨트롤 이벤트(예: button 컨트롤의 click이벤트)
5. PreRender이벤트
웹폼 페이지 내의 서버측 스크립트의 실행을 모두 마치고 page 클래스와 그 안의 포함된 자식 컨트롤들이 렌더링 되기 직전 발생
6. SaveView State 이벤트
7. Unload 이벤트
웹폼 페이지의 실해을 모두 마치고 페이지가 메모리에서 제거 될때 발생
좀더 이해를 돕기 위해 웹폼 이벤트를 처리하는 과정을 그림을 통해 살펴보도록 하겠습니다.
그림과 같이 간단한 로그 인 폼을 기준으로 이벤트에 대해 설명해 보도록 하겠습니다. 먼저 사용자가 웹 브라우저에 표시된 로그 인 폼에 로그 인 정보를 입력한 후 로그 인 버튼을 클릭합니다. 그러면 사용자가 입력한 데이터들과 <FORM>태그 내에 존재하는 나머지 데이터들이 POST방식으로 서버로 전송 되겠지요. 이 때 로그 인 버튼이 클릭되었다는 정보 역시 POST 데이터에 포함되어 함께 서버로 전송됩니다. 여기까지가 클라이언트 측에서 일어나는 과정들입니다. 서버 측에서 일어나는 일들은 그림의 우측에 나타나 있습니다.
클라이언트로부터 전송된 POST 데이터는 ASP.NET 실행 엔진에 의해 데이터 구문 분석 과정인 파싱 과정을 거치게 됩니다. 파싱 과정을 통해 ASP.NET 실행 엔진은 클라이언트에서 로그 인 버튼이 클릭되었음을 인식하게 되고 이 버튼에 연결된 이벤트 핸들러 메서드를 찾아 호출함으로써 로그 인 과정을 처리하는 서버 측 스크립트를 실행하게 됩니다.
그리고 그 실행 결과를 클라이언트에 HTML 코드로 돌려주게 되는 것이지요. 지금까지의 과정이 웹 폼 페이지를 통해 서버가 이벤트를 처리하는 과정입니다.
'.NET 정리' 카테고리의 다른 글
APS.NET 표준컨트롤 (0) 2010.03.04 [보너스]웹폼에서 엑셀파일 컨트롤 (0) 2010.02.25 ASP.NET Development Model (0) 2010.02.18 ASP.NET Execution Model (0) 2010.02.18 NET Framework Class Library (0) 2010.02.18