2010년 5월 29일 토요일

제3장 애플리케이션과 페이지 프레임워크

 

ASP.NET 2.0에서 강력해진 웹 어플리케이션 관리 기능과 웹 페이지 관리 기능에 대해 학습해보자. 이 장부터는 전문적이고 반드시 이해를 해야 할 이슈들이 나오기 시작한다. 학습에 집중하도록 하자

 

  • ASP.NET 2.0 페이지 생성 모델

 

  • 인라인 코딩 모델

 ASP.NET 1.0 과는 다르게 ASP.NET 2.0은 페이지 단위로 비지니스 로직을 코딩할 수 있다.

 

[표. 인라인 코딩 모델을 적용할 수 있는 ASP.NET 페이지 유형]

페이지 유형 파일 확장명
[Web Form] .aspx 파일
[Master Page] .master 파일
[Web User Control] .ascx 파일
[Web Service] .asmx 파일
  • 코드 비하인드 모델

비지니스 로직을 별도의 파일을 구성할 수 있으며 ASP.NET 2.0 부터는 분할 클래스(partial)르 지원한다.

 

[표. 코드 숨김 모델을 적용할 수 있는 ASP.NET 페이지 유형]

페이지 유형 파일 확장명
[Web Form] .aspx파일 => .aspx.cs / .aspx.vb
[Master Page] .master 파일 => .master.cs / .master.vb
[Web User Control] .ascx 파일 => .ascx.cs / .ascx.vb
[Web Service] .asmx 파일 => .asmx.cs / .asmx.vb
  • ASP.NET 지시문

 

ASP.NET 페이지에서 핵심적인 부분으로 ASP.NET 페이지나 유저 컨트롤에 적용할 수 있는 지시문은 11개가 있다.

지시문은 페이지를 컴파일 할 때 컴파일러가 사용하는 명령으로 다음과 같은 Syntax를 가진다.

<%@ [Directive] [Attribute=Value] [Attribute=Value] ... %>

지시문은 관행적으로 페이지에 맨 앞에 두는 데 다른 곳에 두어도 컴파일시 문제는 없다. ( 그러나 코드 가독성 및 중요도에서 이 방법이 좋다. )

 

  • ASP.NET 2.0 지시문 <MSDN>
  • Assembly => 어셈플리를 Page 클래스나 유저 컨트롤에 연결하는 지시문이다.
  • Control => 유져 컨트롤(.ascx)을 제어하는 지시문이다.
  • Implements => 닷넷 프레임워크의 특정 인터페이스를 구현하는 지시문이다.
  • Import => Page 클래스나 유져 컨트롤에 특정 네임스페이스를 참조하는 지시문이다.
  • Master => 마스터 페이지를 제어하는 지시문이다. 이 지시문의 특성과 값으로 마스터 페이지의 파싱과 컴파일을 제어한다. 이 지시문은 오직 마스터 페이지(.master)에서만 사용한다.
  • MasterType => Page 클래스의 Master 속성에서 특정 마스터 페이지를 참조할 때 강력한 타입 참조를 제어하는 지시문이다.
  • OutputCache => Page 클래스나 유져 컨트롤의 출력 캐시 정책을 제어하는 지시문이다.
  • Page => 페이지를 제어하는 지시문이다. 이 지시문의 특성과 값으로 ASP.NET 페이지의 파싱과 컴파일을 제어한다. 이 지시문은 오직 ASP.NET 페이지(.aspx) 에서만 사용한다.
  • PreviousPageType => ASP.NET 어플리케이션에서 페이지 간 포스트백(POSTBACK) 을 다루는 지시문이다.
  • Reference => Page 클래스나 유저 컨트롤을 현재 사용하는 Page 클래스나 유저 컨트롤에 연결하는 지시문이다.
  • Register => 별칭을 사용해서 유저 컨트롤과 커스텀 서버 컨트롤의 네임스페이스와 클래스 이름을 나타내는 지시문이다.

     

  • ASP.NET 페이지 이벤트

 

특정 컨트롤과 관련하여 이벤트 구현을 서버 측 코드에서 구현한다.

ASP.NET 2.0 페이지 생성 과정 이벤트

  1. PreInit
  2. Init
  3. InitComplete
  4. PreLoad
  5. Load
  6. LoadComplete
  7. PreRender
  8. PreRenderComplete
  9. Unload

 

  • 포스트백 다루기

 

포스트백이란 페이지 정보를 스스로에게 다시 알려주는 동작이다. 따라서 ASP.NET 페이지에서는 어떤 요청이 들어올 때 이 요청이 포스트백인지 아닌지 반드시 먼저 확인할 필요가 있다.

 

  • 페이지 간 포스팅

 

한페이지에서 다른 페이지로 모든 컨트롤 값을 전달, 웹 어플리케이션 개발시 가장 빈번히 발생하는 문제이다.

 

  • ASP.NET 어플리케이션 폴더

 

  • App_Code 폴더

클래스나 .wsdl 파일 및 형식화된 데이터 셋 등이 저장되는 폴더. 여기에 저장된 항목은 솔루션 내의 모든 페이지에서 동적으로 활용될 수 있다.

파일이 저장됨과 동시에 비주얼 스튜디오에서 자동 컴파일 된다. 또한 App_Code 폴더에 추가된 모든 파일은 하나의 단일한 어셈블리로 컴파일 되며 특정 프로그래밍 언어에 제약을 받지 않는다. 여기서 유의할 점은 단일한 어셈블리로 구현되므로 서로 다른 프로그래밍 언어를 사용하는 클래스는 함께 있을 수 없다. 따라서 서로 다른 프로그래밍 언어를 사용하려면 다음과 같이 폴더 구조를 나누고 web.config파일을 수정해야 한다.

[App_Code 폴더 구조]

\App_Code                    

  • VB                  

    • Add.vb      

  • CS                  

    • Subtract.cs

[web.config 수정 항목]

<compilation>

<codeSubDirectories>

<add directoryName="CS"></add>

<add directoryName="VB"></add>

</codeSubDirectories>

</compilation>

 

  • App_Data 폴더

어플리케이션이 사용하는 데이터 저장소. 예를 들면 .mdf, .mdb, .xml등의 데이터 파일을 저장한다. 어플리케이션을 구동하는 계정은 이 폴더안에 있는 모든 파일에 읽기와 쓰기 권한을 가진다.

 

  • App_Themes 폴더

모든 페이지에 일관된 룩앤필을 제공하는 새로운 기법. .skin 파일, css 파일, 이미지 등으로 구현

 

  • App_GlobalResources 폴더

리소스 파일은 어플리케이션에서 데이터 사전 용도롤 활용하는 문자열 테이블. .resx 파일을 추가하면 이 파일은 동적으로 컴파일되며 어플리케이션의 모든 .aspx 페이지에서 사용 가능

 

  • App_LocalResources 폴더

특정 .aspx 페이지에만 리소스를 적용할 경우 이 폴더를 사용. 예를 들면 Default.aspx.resx, Default.aspx.fi.resx 와 같다.

 

  • App_WebReferences 폴더

웹 참조 폴더. 어플리케이션에서 참조하는 원격지의 웹 서비스에 자동으로 엑세스 할 수 있다.

 

  • App_Browsers 폴더

.browser파일을 저장하는 곳. 이파일은 요청한 브라우져가 무엇인지 식별하고 그 브라우져에서 제공하는 기능을 이해하는 데 사용하는 XML 파일. 기본 설정 내용은 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers폴더에서 찾을 수 있다.

 

  • 컴파일

 

ASP.NET 어플리케이션의 구동 프로세스 상에서 브라우져 요청페이지의 빠른 응답을 위해서 사전 컴파일 방법을 수행한다.

 

컴파일러 위치 : C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe

 

  • 전체 어플리케이션 컴파일 방법

aspnet_compiler -p "C:\Inetpub\wwwroot\HOME" -v none

 

  • 전체 어플리케이션 배포 컴파일 방법 (DLL만 배포)

aspnet_compiler -v [Application Name] -p [Physical Location] [Target]

 

  • 컴파일 옵션
  • -m

애플리케이션의 IIS 메타베이스 전체 경로를 지정한다. 만일 -m 명령어를 사용하면 -v 명령어나 -p 명령어를 사용할 수 없다.

  • -v

컴파일될 어플리케이션의 가상 경로를 지정한다.

  • -p

컴파일될 어플리케이션의 물리적 경로를 지정한다.

  • targetDir

컴파일될 파일이 어디에 위치해야 하는지 목표 디렉토리를 지정한다.

 

  • 전역 어플리케이션 클래스 : Global.asax

 

어플리케이션 수준의 이벤트, 개체, 변수 등을 관리하는 파일

처리 가능한 이벤트

  • Application_Start

어플리케이션 요청이 처음 전달될 때 호출. 모든 사용자에게 반드시 유지되어야 하는 사항을 저장하는데 최적의 장소

  • Session_Start

각 사용자마다 어플리케이션을 처음 엑세스 할 때 발생

  • Application_BeginRequest

모든 요청이 어플리케이션에 들어오기 직전에 호출

  • Applicatio_AuthenticateRequest

각 요청마다 호출되며 이 이벤트를 사용하면 해당 요청에 대한 사용자 맞춤형 인증을 설정할 수 있다.

  • Application_Error

어플리케이션 임의의 지점에서 오류가 발생하면 호출

  • Session_End

세션상태가 InProc 모드로 동작할 경우에만 지원되며 세션이 만료되면 호출

  • Application_End

어플리케이션이 종료될 때 호출

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

댓글 없음:

댓글 쓰기