다음을 통해 공유


ASP.NET 웹 페이지 코드 모델

업데이트: 2007년 11월

ASP.NET 웹 페이지는 다음과 같은 두 부분으로 구성됩니다.

  • 태그, 서버 컨트롤 및 정적 텍스트를 포함하는 시각적 요소

  • 이벤트 처리기 및 다른 코드를 포함하는 페이지 프로그래밍 논리

ASP.NET에서는 단일 파일 페이지 모델과 코드 숨김 페이지 모델이라는 두 가지 모델을 제공하여 시각적 요소와 코드를 관리합니다. 두 모델은 같은 방식으로 동작하므로 두 모델에 대해 같은 컨트롤과 코드를 사용할 수 있습니다.

이 항목에서는 각 모델의 동작 방식을 설명하고 두 모델 중 하나를 선택할 경우에 참조할 수 있는 몇 가지 제안 사항을 제공합니다.

단일 파일 페이지 모델

단일 파일 페이지 모델에서는 동일한 실제 .aspx 파일에 페이지의 태그와 프로그래밍 코드가 있습니다. 프로그래밍 코드는 ASP.NET에서 실행해야 할 코드로 표시하기 위해 특성이 포함된 script 블록에 있습니다.

다음 코드 예제에서는 Button 컨트롤과 Label 컨트롤이 포함된 단일 파일 페이지를 보여 줍니다. 강조 표시된 부분은 script 블록 내의 Button 컨트롤에 대한 Click 이벤트 처리기를 보여 줍니다.

<%@ Page Language="VB" %>
<script >
    Protected Sub Button1_Click(ByVal sender As Object, _            ByVal e As System.EventArgs)        Label1.Text = "Clicked at " & DateTime.Now.ToString()    End Sub
</script>

<html>
<head id="Head1" >
  <title>Single-File Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Label ID="Label1" 
         Text="Label">
      </asp:Label>
      <asp:Button ID="Button1" 
          OnClick="Button1_Click" Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<script >
void Button1_Click(Object sender, EventArgs e){    Label1.Text = "Clicked at " + DateTime.Now.ToString();}
</script>
<html>
<head>
  <title>Single-File Page Model</title>
</head>
<body>
  <form >
    <div>
       <asp:Label id="Label1" 
          Text="Label">
       </asp:Label>
       <br />
       <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>

script블록에는 페이지에 필요한 만큼의 코드가 포함될 수 있습니다. 코드는 페이지의 컨트롤에 대한 이벤트 처리기(예제 참조), 메서드, 속성 및 일반적으로 클래스 파일에 사용되는 다른 코드 등으로 구성될 수 있습니다. 런타임에 단일 파일 페이지는 Page 클래스에서 파생되는 클래스로 처리됩니다. 이 페이지에는 명시적 클래스 선언이 포함되어 있지 않습니다. 대신 컴파일러에서는 컨트롤을 멤버로 포함하는 새 클래스를 생성합니다. 이 중에서 페이지 멤버로 노출되지 않는 컨트롤도 있으며 일부는 다른 컨트롤의 자식입니다. 페이지의 코드는 클래스의 일부가 됩니다. 예를 들어 사용자가 만드는 이벤트 처리기는 파생된 Page 클래스의 멤버가 됩니다.

자세한 내용은 ASP.NET 페이지 클래스 개요를 참조하십시오.

코드 숨김 페이지 모델

코드 숨김 페이지 모델을 사용하면 태그는 .aspx 파일에 보관하고 프로그래밍 코드는 다른 파일에 보관할 수 있습니다. 코드 파일의 이름은 사용 중인 프로그래밍 언어에 따라 다릅니다.

참고:

일부 .NET 프로그래밍 언어를 사용하면 ASP.NET 웹 페이지에 대한 코드 숨김 파일을 만들 수 없습니다. 코드 숨김 파일을 만들려면 partial 클래스를 지원하는 언어를 사용해야 합니다. 예를 들어 J#에서는 partial 클래스를 지원하지 않으므로 ASP.NET 페이지에 대한 코드 숨김 파일을 만들 수 없습니다.

예를 들어 이름이 SamplePage인 페이지로 작업 중인 경우, 태그는 SamplePage.aspx 파일에 저장되고 코드는 SamplePage.aspx.vb(Visual Basic의 경우), SamplePage.aspx.cs(C#의 경우) 등의 파일에 저장됩니다.

참고:

.NET Framework 버전 2.0에 사용되는 코드 숨김 모델은 이전 버전에 사용되는 코드 숨김 모델과 다릅니다.

코드 숨김 모델의 경우 이전 단원에서 사용된 단일 파일 페이지 예제가 두 부분으로 구성됩니다. 다음 코드 예제와 같이 태그는 특정 파일(이 예제에서는 SamplePage.aspx)에 저장되고 단일 파일 페이지와 비슷합니다.

<%@ Page Language="VB" CodeFile="SamplePage.aspx.vb" 
    Inherits="SamplePage" AutoEventWire="false" %>
<html>
<head  >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
       <asp:Label id="Label1" 
          Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs" 
    Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head  >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
       <asp:Label id="Label1" 
          Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>

단일 파일 모델과 코드 숨김 모델은 .aspx 페이지에서 두 가지 차이를 보입니다. 코드 숨김 모델에서는 특성을 포함하는 script 블록이 없습니다. 페이지에서 클라이언트측 스크립트를 작성하려면 특성이 없는 script 블록을 페이지에 포함할 수 있습니다. 또한 코드 숨김 모델의 @ Page 지시문에는 외부 파일(SamplePage.aspx.vb 또는 SamplePage.aspx.cs)과 클래스를 참조하는 특성이 포함되어 있다는 차이가 있습니다. 이러한 특성은 .aspx 페이지를 코드에 연결합니다.

코드는 다른 파일에 있습니다. 다음 코드 예제에서는 단일 파일 페이지 예제와 동일한 Click 이벤트 처리기가 포함된 코드 숨김 파일을 보여 줍니다.

Partial Class SamplePage
    Inherits System.Web.UI.Page
    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = "Clicked at " & DateTime.Now.ToString()
    End Sub
End Class
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = "Clicked at " + DateTime.Now.ToString();
    }
}

코드 숨김 파일에는 기본 네임스페이스의 완전한 클래스 선언이 포함되어 있습니다. 그러나 클래스는 partial 키워드로 선언되어 이 클래스가 하나의 파일에 완전히 포함되지 않음을 나타냅니다. 대신 페이지가 실행되면 컴파일러에서는 .aspx 페이지 및 이 페이지가 @ Page 지시문에서 참조하는 파일을 읽은 다음 단일 클래스로 어셈블하고, 이를 하나의 단위로 처리하여 단일 클래스로 컴파일합니다.

partial 클래스 파일은 페이지 Page 클래스에서 상속됩니다. 자세한 내용은 ASP.NET 페이지 클래스 개요를 참조하십시오.

페이지 모델 선택

단일 파일 페이지 모델과 코드 숨김 페이지 모델은 기능적으로 동일합니다. 런타임에 두 모델은 같은 방식으로 실행되므로 성능에 차이가 없습니다. 따라서 응용 프로그램에서 코드를 구성하는 방법, 페이지 디자인과 코딩을 구분해야 하는지 여부 등과 같은 다른 요인에 따라 두 페이지 모델 중 하나를 선택할 수 있습니다.

참고:

설명서에 나오는 예제는 대개 단일 파일 페이지로 제공됩니다. 이는 사용자의 편의를 위한 것으로, 이렇게 하면 예제마다 두 파일을 나타낼 필요가 없기 때문입니다. 설명서에 단일 파일 예제만 있다고 해서 코드 숨김 페이지보다 단일 파일 페이지가 낫거나 단일 파일 페이지에만 고유한 장점이 있는 것은 아닙니다.

단일 파일 페이지의 장점

일반적으로 단일 파일 모델은 코드가 주로 페이지의 컨트롤에 대한 이벤트 처리기로 구성되어 있는 페이지에 적합합니다.

단일 파일 페이지 모델을 사용할 경우 다음과 같은 장점이 있습니다.

  • 코드가 많지 않은 페이지에서는 코드와 태그를 같은 파일에 유지하여 얻는 편리함이 코드 숨김 모델의 다른 장점보다 우선합니다. 예를 들어 코드와 태그를 한 곳에서 확인할 수 있으므로 단일 파일 페이지를 쉽게 검토할 수 있습니다.

  • 단일 파일 모델을 사용하여 작성한 페이지는 파일이 하나뿐이므로 다른 프로그래머에게 배포하거나 보내기가 쉽습니다.

  • 파일 간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 바꿀 수 있습니다.

  • 페이지가 단일 파일에서 독립적이므로 소스 코드 제어 시스템에서 파일을 관리하기가 쉽습니다.

코드 숨김 페이지의 장점

코드 숨김 페이지는 중요한 코드를 포함하거나 여러 명의 개발자가 웹 사이트를 만드는 웹 응용 프로그램에 적합하도록 여러 가지 장점을 제공합니다.

코드 숨김 모델을 사용할 경우 다음과 같은 장점이 있습니다.

  • 코드 숨김 페이지는 태그(사용자 인터페이스)와 코드를 완전히 구분합니다. 따라서 프로그래머가 코드를 작성하는 동안 디자이너는 태그로 작업할 수 있습니다.

  • 페이지 태그로만 작업하는 다른 사람이나 페이지 디자이너에게 코드가 노출되지 않습니다.

  • 코드를 여러 페이지에 다시 사용할 수 있습니다.

컴파일 및 배포

컴파일과 배포 작업은 단일 파일 페이지와 코드 숨김 페이지에서 모두 비슷합니다. 가장 간단한 방법은 페이지를 대상 서버에 복사하는 것입니다. 코드 숨김 페이지로 작업할 경우에는 .aspx 페이지와 코드 파일을 둘 다 복사합니다. 페이지가 처음으로 요청되면 ASP.NET에서 페이지를 컴파일하여 실행합니다. 두 시나리오 모두 소스 코드를 태그와 함께 배포합니다.

웹 사이트를 미리 컴파일할 수도 있습니다. 이런 경우 ASP.NET 에서는 대상 서버에 복사할 수 있는 페이지에 대한 개체 코드를 생성합니다. 미리 컴파일하는 방법은 단일 파일 모델과 코드 숨김 모델에 모두 적용할 수 있으며 결과도 같습니다. 자세한 내용은 ASP.NET 미리 컴파일 개요를 참조하십시오.

참고 항목

개념

ASP.NET 페이지 수명 주기 개요

ASP.NET 컴파일 개요