05 ASP.NET 2.0 페이지 및 응용 프로그램 구조 웹 폼(Web Form) 웹 폼 이벤트 다시 게시(Postback)와 페이지 간 게시(Cross-Page Posting) ASP.NET 2.0 응용 프로그램 구조
웹 폼(Web Form) 웹 폼이란? 웹 폼의 구조 웹 폼은 ASP.NET 페이지(.aspx 파일)와 같은 개념으로서 ASP.NET 프로그래밍을 하기 위해 사용하는 Form(형틀) 또는 기반 입니다. ASP.NET 개발자는 이 웹 폼 위에서 웹 페이지를 디자인하고 소스 코드를 작성합니다. 웹 폼의 구조 웹 폼은 크게 다음과 같은 두 부분으로 구성됩니다. 표현 부분(웹 폼의 시각적인 부분을 담당) 코드 부분(웹 폼의 내부 로직 부분을 담당)
웹 폼(Web Form) [웹 폼의 구조]
웹 폼(Web Form) VS 2005에서는 웹 폼의 효율적인 작성을 위해 소스 뷰와 디자인 뷰를 지원합니다. 소스 뷰는 웹 폼의 구조를 소스 그대로 보여주는 창이고, 디자인 뷰는 웹 폼의 표현 부분을 비주얼하게 보여주는 창입니다. 웹 폼 코드 모델 웹 폼에는 다음과 같은 두 가지 코드 모델이 있습니다. 단일 파일 페이지 모델(Single-File Page Model) 코드 숨김 페이지 모델(Code-Behind Page Model)
웹 폼(Web Form) 단일 파일 페이지 모델은 웹 폼의 코드 부분과 표현 부분이 .aspx 파일(동일한 웹 폼)에 같이 존재하는 형태입니다. 코드 숨김 페이지 모델은 웹 폼의 표현 부분과 코드 부분이 따로 분리된 형태입니다. 즉, 표현 부분은 .aspx 파일에 놓여지고 코드 부분은 다른 클래스 파일(.cs 파일)에 놓여지는 형태입니다.
웹 폼(Web Form) [코드 숨김 페이지 모델의 웹 폼]
웹 폼(Web Form) 단일 파일 페이지 모델과 코드 숨김 페이지 모델은 기능적으로 동일하며 런타임에 같은 방식으로 실행되므로 성능에 차이가 없습니다. 따라서 응용 프로그램에서 코드를 구성하는 방법, 페이지 디자인과 코딩을 구분해야 하는지 여부 등과 같은 요인에 따라 두 페이지 모델 중 하나를 선택하면 됩니다. 단일 파일 페이지 모델의 장점 코드가 많지 않을 경우 코드와 태그를 한 곳에서 확인할 수 있으므로 쉽게 웹 폼을 분석할 수 있습니다. 단일 파일 페이지 모델로 작성한 웹 폼은 파일이 하나뿐이므로 다른 개발자에게 배포하거나 보내기가 쉽습니다. 파일 간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있습니다.
웹 폼(Web Form) [실습] 단일 파일 페이지 모델의 웹 폼과 코드 숨김 페이지 모델의 웹 폼 만들기 코드 숨김 페이지 모델의 장점 코드 숨김 페이지는 코드 부분과 표현 부분을 완전히 구분합니다. 따라서 개발자가 코드를 작성하는 동안 웹 디자이너는 태그로 디자인 작업을 진행 할 수 있습니다. 웹 디자이너에게 코드를 노출하지 않으므로 개발자와 웹 디자이너 간에 혼선을 줄일 수 있습니다. 코드를 여러 페이지에 재사용할 수 있습니다. [실습] 단일 파일 페이지 모델의 웹 폼과 코드 숨김 페이지 모델의 웹 폼 만들기 [실습] 단일 파일 페이지 모델의 웹 폼에 Load 이벤트 처리기 등록하기
웹 폼(Web Form) [예제 5-1] 단일 파일 페이지 모델 예제
웹 폼(Web Form) <여기서 잠깐> 속성(Property)과 특성(Attribute) 속성(Property)은 캡슐화 기능, get및 set 접근자를 통해 추가적인 논리를 실행하는 기능 등을 제공하는 클래스 멤버로서 이미 4장에서 다루었습니다. 또한 HTML 태그에서 태그 내에 포함된 부가적인 정보도 속성이라고 표현합니다(예: <a href=”…”></a>에서 href는 <a>태그의 속성입니다). 하지만 특성(Attribute)은 런타임 시 응용 프로그램 동작에 영향을 주는 데 사용되는 설명적인 선언입니다. 예를 들어 @Page 지시문은 클래스가 아니며 HTML 태그도 아닙니다. @Page 지시문에 포함된 Language는 런타임 시 웹 폼의 동작을 제어하므로 Language는 속성이 아닌 특성이 되는 것입니다. 이 온라인 강의에서는 속성과 특성이라는 용어가 자주 등장하므로 이 둘을 확실히 구분할 수 있도록 합시다.
웹 폼(Web Form) <여기서 잠깐> XHTML이란? XHTML(eXtensible HyperText Markup Language)은 HTML을 XML 문서로 정의하는 W3C(World Wide Web Consortium, 인터넷 표준 기관)의 표준입니다. HTML은 엄격한 문법 체크를 하지 않고 스타일과 내용이 혼재 되어있으므로 HTML 문서에 포함되어 있는 순수 내용만을 프로그래밍적으로 뽑아내기가 힘듭니다. 그러므로 HTML은 시스템, 운영체제, 브라우저 종류에 관계 없이 모든 환경에서 호환되는 웹 페이지를 만드는데 한계가 있으며 이런 이유에서 만들어진 것이 바로 XHTML입니다. XHTML은 엄격하게 문법 체크를 하고 스타일과 내용을 완전히 분리시킬 수 있으므로 특정 시스템(컴퓨터, PDA, 휴대폰, 가전기기 등등), 운영체제(Windows, 리눅스 등등), 브라우저(인터넷 익스플로러, 네스케이프 등등)에 상관없이 모든 환경에서 호환되는 웹 페이지를 만들 수 있습니다. 올바른 XHTML 웹 페이지는 해당 페이지를 XHTML 페이지로 식별하고 해당 규칙을 준수하기 위해 반드시 DOCTYPE 선언이 포함되어 있어야 하며([예제 5-1]의 3행), XHTML 네임스페이스를 참조하는 속성도 페이지의 HTML 태그에 포함되어 있어야 합니다([예제 5-1]의 13행). 현재 XHTML에는 XHTML 1.0 Transitional, XHTML 1.0 Frameset, XHTML 1.0 Strict 및 XHTML 1.1 규격이 존재하며 이 중 XHTML 1.1 규격이 가장 엄격합니다. VS 2005에서는 기본적으로 XHTML 1.0 Transitional 규격을 사용합니다.
웹 폼(Web Form) [예제 5-2] 코드 숨김 페이지 모델 예제
웹 폼(Web Form) 개선된 ASP.NET 2.0 코드 숨김 페이지 모델 ASP.NET 1.x에서도 단일 파일 페이지 모델과 코드 숨김 페이지 모델을 지원했습니다. ASP.NET 2.0으로 넘어오면서 단일 파일 페이지 모델은 바뀌지 않았지만 코드 숨김 페이지 모델은 이전 모델의 단점을 개선하기 위해 많은 부분이 변경되었습니다.
웹 폼(Web Form) 다음은 ASP.NET 1.x에서의 코드 숨김 페이지 모델을 나타낸 그림입니다.
웹 폼(Web Form) ASP.NET 2.0 코드 숨김 페이지 모델에서는 C# 2.0에 추가된 partial 형식이라는 새로운 언어 기능을 사용하여 ASP.NET 1.x에서 가지고 있던 상속의 복잡성, 컴파일의 복잡성 문제를 한번에 해결했습니다. partial 형식은 클래스(또는 구조체, 인터페이스)를 두 개 이상의 소스 파일로 분할할 수 있는 기능을 말합니다. partial 클래스로 분할된 여러 클래스는 컴파일 시 컴파일러에 의해 합쳐집니다. ASP.NET 2.0의 코드 숨김 파일(.cs 파일)은 partial 클래스로 정의됩니다. 다음은 ASP.NET 2.0에서의 코드 숨김 페이지 모델을 나타낸 그림입니다.
웹 폼(Web Form) 다음은 ASP.NET 2.0에서의 코드 숨김 페이지 모델을 나타낸 그림입니다.
웹 폼(Web Form) <여기서 잠깐> 코드 숨김 페이지 모델을 지원하지 않는 .NET 언어 ASP.NET 2.0에서 코드 숨김 페이지 모델의 웹 폼을 만들려면 partial 클래스를 지원해야 하는 데 J#과 같이 partial 클래스를 지원하지 않는 .NET 언어를 사용하면 코드 숨김 페이지 모델의 웹 폼을 만들 수 없습니다.