다음을 통해 공유


ASP.NET 2.0의 기능 변경 내용

 

2006년 7월

Jayesh Patel, Bryan Acker, Robert McGovern
주입 개발

요약: ASP 또는 ASP.NET 1.x에서 마이그레이션을 고려하는 경우 ASP.NET 2.0의 새로운 기능에서 제공하는 이점을 확실히 고려해야 합니다. 이 문서에서는 ASP 또는 ASP.NET 1.1에 익숙한 개발자를 위한 ASP.NET 2.0의 기능 기반 개요를 제공합니다. (29페이지 인쇄)

콘텐츠

소개
아키텍처의 변경 내용
개발 변경 내용
ASP.NET 2.0의 새로운 기능
테마 정의
테마 사용
컨트롤에 스킨 적용
요약

소개

개발 커뮤니티의 요구 사항이 진화함에 따라 컴퓨터 언어 및 프레임워크가 진화합니다. ASP.NET 예외는 아닙니다. ASP.NET 2.0은 ASP.NET 프레임워크의 첫 번째 주요 업데이트이며 ASP.NET 1.x에서 발생하는 일반적인 문제에 대한 솔루션과 .NET 플랫폼에서 웹 개발의 유연성과 기능을 크게 향상시키는 새로운 기능을 포함합니다. ASP 애플리케이션을 계속 사용하는 경우 ASP.NET 2.0은 업그레이드에 더 많은 인센티브를 제공합니다.

이 백서에서는 ASP.NET 애플리케이션을 개발하는 방식의 주요 아키텍처 변경 사항 및 수정 사항을 다루며 ASP.NET 2.0에서 제공되는 몇 가지 중요한 새로운 기능도 살펴봅니다. 이 문서의 대부분의 topics ASP.NET 1.x의 배경을 가정합니다. 이전에 ASP.NET 애플리케이션을 개발한 적이 없는 경우 에서 https://msdn.microsoft.com/asp.net/reference/migration/aspmig/default.aspxMSDN 마이그레이션 가이드로 시작하는 것이 좋습니다.

ASP.NET 1.x에서 마이그레이션하는 경우 일반적인 ASP.NET 2.0 변환 문제 및 솔루션을 참조할 수도 있습니다. 변환 문제 및 솔루션 백서에서는 마이그레이션 수행에 대한 실질적인 구현 세부 정보를 제공합니다. 또한 Visual Studio 변환 마법사를 사용하여 ASP.NET 1.x 애플리케이션을 ASP.NET 2.0으로 업그레이드하는 방법을 완전히 설명합니다.

ASP.NET 2.0의 목표

ASP.NET 1.1을 기반으로 ASP.NET 2.0 개발자는 다음 네 가지 목표에 집중하기로 결정했습니다.

  1. 웹 애플리케이션의 안정성 및 유용성 향상

    현재 많은 ASP.NET 1.x 애플리케이션은 Microsoft IIS 5.0에서 실행됩니다. ASP.NET 2.0은 향상된 성능 및 확장성을 위해 새로운 IIS 6.0 기능을 활용합니다. 특히 IIS 6.0은 진정으로 독립적인 방식으로 여러 애플리케이션을 호스트하는 서버의 기능을 크게 향상시키는 새로운 프로세스 모델을 제공합니다. 각 ASP.NET 애플리케이션은 자체 격리된 프로세스에 있으며 실수로 다른 애플리케이션과 상호 작용할 수 없습니다. 간단히 말해서, 애플리케이션은 더 이상 서로 끊을 수 없습니다. 각 애플리케이션은 다른 모든 애플리케이션과 완전히 분리되어 실행됩니다. 한 애플리케이션이 충돌하는 경우 다른 애플리케이션에는 영향을 주지 않습니다.

    유용성 측면에서 master 페이지 및 테마와 같은 새로운 기능을 사용하면 관리 가능하고 구성 가능한 일관된 구조를 사용하여 대규모 웹 애플리케이션을 개발할 수 있습니다.

  2. 일반적인 시나리오에서 작성해야 하는 코드 줄 수 줄이기

    ASP.NET 2.0에는 한 줄의 코드를 작성하지 않고도 빈번한 작업(예: 데이터 액세스)을 수행할 수 있는 마법사 및 컨트롤이 포함되어 있습니다. Visual Studio 2005에는 데이터 바인딩된 테이블을 사용하여 복잡한 페이지를 레이아웃하고 구성하는 디자이너가 포함되어 있습니다. 개발자는 마법사를 사용하여 더 빠르고 스마트하게 작업할 수 있습니다.

    ASP.NET 2.0은 .NET Framework 변경 내용도 활용합니다. 특히 부분 클래스 개념은 ASP.NET 개발자에게 특히 유용합니다. partial 클래스를 사용하면 코드의 일부를 작성할 수 있으며 필요한 경우 ASP.NET 컴파일러에서 나머지를 작성할 수 있습니다. 더 이상 상용구 코드를 볼 필요가 없으며 코드를 작성할 필요가 없습니다.

  3. 웹 애플리케이션을 개인 설정하기 위한 사용자 기능 제공

    ASP.NET 2.0에는 사용자 계정을 관리하고 애플리케이션에서 페이지의 콘텐츠와 레이아웃을 개인 설정할 수 있는 기본 제공 컨트롤이 포함되어 있습니다. 먼저 멤버 자격 서비스를 사용하여 사용자를 추적할 수 있습니다. 새 로그인 컨트롤은 멤버 자격 서비스와 통합되어 코드를 작성하지 않고도 계정 만들기 및 사용자 로그인을 자동화할 수 있습니다. 새 웹 파트 기능을 사용하면 사용자가 편집하고 개인 설정할 수 있는 컨트롤이 포함된 웹 애플리케이션을 만들 수 있습니다. 사용자는 웹 페이지에 표시되는 파트를 선택 및 사용자 지정할 수 있습니다. 마지막으로 Profile 서비스는 선언적 XML 구성을 통해 사용자 기본 설정 및 데이터의 장기 지속성을 제공합니다.

  4. 향상된 디자인 기능을 제공하여 일관된 레이아웃 및 디자인을 생성합니다.

    ASP.NET 2.0은 일관된 페이지 레이아웃과 디자인으로 애플리케이션을 빌드하기 위해 master 페이지, 테마 및 스킨을 지원합니다. 이러한 새로운 기능은 쉽게 구현하고 수정할 수 있으며 대규모 애플리케이션의 관리 효율성과 유지 관리를 크게 향상시킵니다.

    ASP.NET 2.0의 많은 새로운 기능은 특히 이러한 목표를 해결하기 위한 것입니다. 나머지 문서에서는 개별 기술을 살펴보고 ASP.NET 2.0이 ASP.NET 1.x를 기반으로 구축되어 강력한 웹 애플리케이션 개발 플랫폼을 제공하는 방법을 살펴봅니다.

ASP.NET 2.0은 ASP 개발자에게 무엇을 의미하나요?

ASP 개발자의 경우 ASP.NET 2.0의 많은 새로운 기능의 영향은 주로 개발 배경에 따라 달라집니다. 클래식 ASP에는 테이블이나 폼 생성과 같은 비교적 간단한 작업에도 상당한 HTML 지식과 수동 코딩이 필요했습니다. ASP.NET 이러한 특이성의 대부분을 추상화하고 자동 생성 코드 또는 핵심 클래스 라이브러리에 캡슐화합니다. HTML 태그, POST, GET 및 쿼리 문자열에 대해 더 이상 걱정할 필요가 없습니다. 비즈니스 논리를 구현하는 코드 개발에 집중할 수 있습니다.

클래식 ASP 개발은 스크립팅 코드와 HTML 코드를 혼합했습니다. 이 스파게티 코드는 가독성을 매우 어렵게 만들었습니다. 스크립팅 코드는 어디서나 삽입할 수 있으므로 코드를 제대로 확장 가능한 방식으로 공유하는 잘 설계된 애플리케이션을 빌드하기가 어려웠습니다. ASP.NET 애플리케이션은 개체 지향 패러다임을 구현하여 개발을 더 빠르게 하고 기존 코드를 빌드하는 복잡성을 줄입니다.

ASP.NET 2.0은 ASP에서 수동으로 구현해야 하는 많은 중복 세부 정보도 처리합니다. 예를 들어 개체 지향 기능을 사용하여 페이지 간에 코드를 쉽게 다시 사용할 수 있습니다. 또한 master 페이지를 활용하여 애플리케이션에 대한 일관된 디자인을 빠르게 만들거나 스킨과 테마를 적용하여 프로그래밍 방식으로 웹 페이지의 모양과 느낌을 설정할 수 있습니다. 직관적인 디자인 환경, 풍부한 디버깅 도구 집합 및 강력한 형식의 컴파일된 언어 덕분에 ASP.NET 2.0은 더 나은 애플리케이션을 더 빠르게 개발하는 데 도움이 됩니다.

ASP.NET 1.x에서 마이그레이션

프로덕션에서 ASP.NET 1.x 애플리케이션이 있는 경우 이전 버전과 호환되도록 ASP.NET 생성되었다는 사실에 안심할 수 있습니다. 대부분의 경우 ASP.NET 1.x 애플리케이션은 변경 없이 ASP.NET 2.0에서 정상적으로 실행됩니다. 자세한 내용은 Visual Studio .NET 2002/2003에서 Visual Studio 2005로 웹 프로젝트를 변환하는 단계별 가이드 문서에서 찾을 수 있습니다.

Visual Studio 2005로 업그레이드하면 많은 변경 내용이 표시됩니다. 특히 ASP.NET 페이지의 기본 개발 모델이 변경되었습니다. 또한 ASP.NET 2.0을 사용하면 다양한 새 컴파일 및 배포 옵션이 제공됩니다. 이러한 모든 변경 내용은 다음 섹션에서 자세히 설명합니다.

일반적인 ASP.NET 2.0 변환 문제 및 솔루션에서 마이그레이션 프로세스에 대해 자세히 알아볼 수도 있습니다.

아키텍처의 변경 내용

ASP.NET 기본 아키텍처는 항상 유연성과 확장성을 위해 설계되었습니다. ASP.NET 2.0은 새로운 공급자 모델을 통합하여 많은 새로운 기능을 지원함으로써 이러한 전통을 이어가고 있습니다. 사이트 유지 관리를 개선하고 구성을 개선하기 위해 새로운 유틸리티 및 API가 추가되었습니다. 이러한 모든 변경 내용은 ASP.NET 2.0 애플리케이션 개발을 더 빠르고 간소화된 프로세스로 만드는 동시에 개발자가 ASP.NET 1.x에 익숙한 유연성과 확장성을 제공하도록 설계되었습니다.

공급자 모델

ASP.NET 2.0의 많은 새로운 기능은 웹 애플리케이션과 데이터 저장소 간의 통신에 따라 달라집니다. 이 액세스를 일관된 방식으로 제공하기 위해 ASP.NET 2.0은 공급자 팩터리 모델을 사용합니다. 공급자는 개발자가 특정 데이터 저장소 요구 사항을 충족하기 위해 ASP.NET 2.0 프레임워크를 확장할 수 있는 패턴이자 지점입니다. 예를 들어 개발자는 사용자 식별 시스템을 지원하거나 대체 데이터 저장소에 개인 설정 데이터를 저장할 새 공급자를 만들 수 있습니다.

대부분의 사용자 지정 공급자는 데이터베이스 백 엔드 시스템과 상호 작용합니다. 그러나 프로그래머가 필요한 인터페이스 사양을 충족하는 한 중간 또는 알고리즘을 사용하여 필요한 공급자 메서드 및 클래스를 자유롭게 구현할 수 있습니다.

ASP.NET 2.0 공급자

공급자 모델은 지정된 요청에 대한 스토리지 및 검색을 제공하는 데이터 지속성 계층에 인터페이스 및 후크 집합을 정의합니다. 이러한 방식으로 공급자 모델은 ASP.NET 2.0에서 고유한 클라이언트 문제를 처리할 수 있는 프로그래밍 사양 역할을 합니다.

ASP.NET 2.0은 다음을 비롯한 다양한 공급자를 사용합니다.

  • 멤버 자격 - 멤버 자격 공급자는 사용자 인증 및 사용자 관리를 지원합니다.
  • 프로필 - 프로필 공급자는 프로필에 연결된 사용자별 데이터의 스토리지 및 검색을 지원합니다.
  • 개인 설정 - 개인 설정 공급자는 각 사용자에 대한 웹 파트 구성 및 레이아웃의 지속성을 지원합니다.
  • 사이트 탐색 - 사이트 탐색 공급자는 사이트 내 탐색에 사용할 수 있고 다양한 새 탐색 컨트롤에 연결할 수 있는 논리 모델을 사용하여 ASP.NET 페이지의 물리적 스토리지 위치를 매핑합니다.
  • 데이터 공급자 - ADO.NET 항상 공급자 모델을 사용하여 데이터베이스와 ADO.NET API 간의 연결을 용이하게 했습니다. ASP.NET 2.0은 데이터 원본이라는 새 개체에서 많은 ADO.NET 데이터 호출을 캡슐화하여 데이터 공급자를 기반으로 합니다.

각 공급자 유형은 다른 공급자와 독립적으로 작동합니다. 따라서 멤버 자격 공급자에 문제를 일으키지 않고 프로필 공급자를 바꿀 수 있습니다.

이 문서의 두 번째 섹션에서는 공급자가 새로운 ASP.NET 2.0 기능 중 몇 가지와 함께 사용되는 방법에 대한 구체적인 예를 찾을 수 있습니다.

ASP.NET 2.0 코딩 모델

ASP.NET 1.x에서는 두 가지 방법 중 하나로 ASP.NET 페이지를 개발할 수 있습니다. 먼저 코드를 ASP.NET 태그와 직접 인라인으로 배치할 수 있습니다. 코드 인라인 모델은 클래식 ASP 및 기타 스크립팅 언어에 널리 퍼진 코딩 모델과 매우 유사합니다. 그러나 코드 인라인 모델에는 코드 및 HTML의 혼합과 같은 몇 가지 문제가 있습니다. ASP.NET 1.0에서는 모델을 대체하는 코드 숨김을 도입했습니다. 모델 뒤의 코드는 외부 클래스를 사용하여 코드를 보관했으며 ASPX 페이지에는 HTML 및 ASP.NET 태그가 포함되어 있었습니다. 따라서 모델 뒤에 있는 코드는 코드를 콘텐츠와 성공적으로 분리했습니다. 그러나 몇 가지 흥미로운 상속 문제를 만들고 개발자가 각 웹 페이지에 대해 두 개의 파일을 추적하도록 강요했습니다.

ASP.NET 2.0은 여전히 이러한 두 모델을 모두 지원하지만 두 모델 모두에 몇 가지 중요한 변경 사항이 적용되었습니다. 이러한 개념에 대한 자세한 검토는 ASP.NET 2.0 Internals를 참조하세요.

코드 숨김

ASP.NET 1.x에서와 같이 기본 코드 모델은 모델 뒤에 있는 코드입니다. 별도의 코드 파일을 사용하려면 ASPX 페이지를 만들 때 파일을 만들어야 합니다. 다행히 파일 뒤에 코드를 만드는 것은 새 페이지를 만들기로 결정할 때 확인란을 클릭하는 것만큼 간단합니다.

그림 1. 코드 숨김 파일 만들기

ASP.NET 1.x 및 ASP.NET 2.0의 코드 숨김 파일 간의 주요 차이점은 파일 숨김 코드가 ASPX 페이지에서 상속되는 전체 클래스가 아닌 부분 클래스라는 점입니다. partial 클래스는 여러 소스 파일에서 단일 클래스를 정의할 수 있는 새 .NET 구문입니다. ASP.NET 2.0에서 partial 클래스는 이전 코드 숨김 모델과 함께 있는 상속 관계를 제거하므로 파일 숨김 코드에 특히 유용합니다.

그림 2. ASP.NET 2.0에 대한 코드 숨김 모델

두 부분 클래스(ASPX 및 코드 숨김)는 컴파일 중에 단일 클래스로 병합됩니다. 따라서 파일 뒤에 있는 코드는 모델 뒤에 있는 이전 코드와 관련된 모든 컨트롤 선언 및 상속 문제가 없습니다. 가장 눈에 띄는 차이점은 상속 관계를 유지하는 데 필요한 모든 자동 생성 코드를 더 이상 포함하지 않는 파일 뒤의 실제 코드에서 확인할 수 있습니다.

이전 코드 숨김 파일에는 초기화 영역과 페이지에 배치된 모든 컨트롤에 대한 초기화 코드가 포함되어 있습니다.

  public class WebForm1 : System.Web.UI.Page
  {
    protected System.Web.UI.WebControls.Label Label1;
    private void Page_Load(object sender, System.EventArgs e) {    }
    #region Web Form Designer generated code
      override protected void OnInit(EventArgs e)
      {
        InitializeComponent();
        base.OnInit(e);
      }
      private void InitializeComponent()
      {    
        this.Load += new System.EventHandler(this.Page_Load);
      }
    #endregion
    void Page_Load(object sender, EventArgs e)
    {
      Label1.Text = "Hello ASP.NET 2.0";
    }
  }
}

목록 1. 파일 뒤에 있는 이전 코드(C#)

컨트롤이 ASPX 페이지(partial 클래스의 나머지 절반)에 선언되므로 새 파일은 이 코드를 모두 제거합니다.

namespace ASP {
  public partial class Webform1_aspx : System.Web.UI.Page
  {
    void Page_Load(object sender, EventArgs e)
    {
      Label1.Text = "Hello ASP.NET 2.0";
    }
  }
}

목록 2. 파일 뒤에 새 코드

보듯이 파일 뒤에 있는 새 코드는 훨씬 더 명확하고 읽기 쉽습니다. 파일 숨김 코드는 ASP.NET 페이지에 추가된 모든 컨트롤에 자동으로 액세스할 수 있으며 Visual Studio 2005는 자동 IntelliSense 지원 및 동기화를 제공합니다. Visual Studio는 코드 숨김 파일을 사용할 때도 인식되며 컨트롤을 두 번 클릭하여 해당 이벤트에 액세스할 때 원본 뷰가 아닌 파일을 엽니다.

코드 인라인

Visual Studio 2005에서 코드 숨김 모델을 사용하는 경우 페이지에 추가하는 모든 코드는 클래스 뒤에 있는 <코드 대신 ASPX 파일 내의 스크립트> 블록에 자동으로 추가됩니다. 그러나 Visual Studio 2005는 코드 뷰에 코드를 계속 표시합니다. 즉, 코드가 별도의 클래스 대신 ASPX 페이지에 직접 배치된다는 점을 제외하고 항상 사용 중인 것처럼 Visual Studio를 계속 사용할 수 있습니다.

Aa479401.migrateasp203b(en-us, MSDN.10).gif

그림 3. 보기 전환

코드는 여전히 스크립트> 블록 및 파일의 배치를 통해 <콘텐츠와 구분됩니다. 그러나 개발자는 두 개의 개별 파일을 동기화하는 대신 이제 하나의 파일에 대해서만 걱정할 필요가 있습니다.

/app_Code 디렉터리

코딩 모델의 마지막 주요 변경 내용은 ASP.NET 일반적인 문제에 대한 직접적인 응답입니다. 대부분의 웹 애플리케이션에는 하나 이상의 지원 클래스가 필요합니다. ASP.NET 기본 방법은 지원 클래스에 대한 별도의 프로젝트를 만든 다음 웹 애플리케이션 내에서 지원 프로젝트에 대한 참조를 추가하는 것이었습니다. 별도의 프로젝트를 만들지 않은 경우에도 자체 애플리케이션 내에서 사용한 네임스페이스에 대한 참조를 만들어야 했습니다. 더 크고 복잡한 애플리케이션에 별도의 프로젝트가 있는 것은 의미가 있지만, 한두 개의 간단한 클래스만 필요한 개발자에게는 종종 고통스러웠습니다.

ASP.NET 2.0에서는 지원 코드를 추가하는 새로운 방법을 소개합니다. /app_code 디렉터리가 ASP.NET 애플리케이션에서 자동으로 컴파일 및 참조되는 특수 디렉터리입니다. 즉, /app_code 디렉터리 내에 배치하는 모든 클래스는 애플리케이션의 모든 ASPX 페이지에서 자동으로 액세스할 수 있습니다. Visual Studio 2005 및 ASP.NET 컴파일러는 모두 이러한 클래스에서 어셈블리를 자동으로 만들고 웹 애플리케이션에서 어셈블리에 대한 참조를 배치합니다.

총 ASP.NET 7개의 보호된 애플리케이션 디렉터리를 구현하여 각 애플리케이션의 내용과 데이터를 구성하고 유지 관리합니다.

새 디렉터리 콘텐츠
/빈 참조된 어셈블리
/App_code 공유 애플리케이션 코드
/app_globalresources 일반 리소스 파일
/app_localresources 지역화된 리소스 파일
/app_webreferences 웹 서비스에 대한 링크
/App_data 멤버 자격, 웹 파트 등에 대한 로컬 데이터베이스
/App_browsers 브라우저별 설정
/app_themes 테마 설정

표 1. 애플리케이션 디렉터리

이러한 디렉터리 대부분은 ASP.NET IIS에 연결하는 ISAPI 계층의 웹 액세스로부터 보호됩니다. 즉, 사용자가 반드시 필요한 경우가 아니면 특수 디렉터리로 이동할 수 없습니다(예: html 레이아웃 파일이 포함되어 있기 때문에 app_themes 열려 있음).

구성 및 사이트 유지 관리

ASP.NET 개발자로서 더 어려운 문제 중 하나는 Web.config 파일을 올바르게 구성하는 것이었습니다. ASP.NET 2.0 및 Visual Studio 2005에서는 이제 이 작업에 도움이 되는 몇 가지 새로운 기능이 있습니다.

Web.config IntelliSense

먼저 Visual Studio의 IntelliSense 기능이 이제 유효한 스키마가 있는 모든 XML 파일로 확장되었습니다. Web.config 파일의 경우 Visual Studio 내에서 Web.config 파일을 편집할 때마다 전체 IntelliSense 지원을 받게 됩니다.

Aa479401.migrateasp204(en-us,MSDN.10).gif

그림 4. Web.config IntelliSense

IntelliSense는 잘못 구성된 파일의 가능성을 줄이는 데 도움이 됩니다. 그러나 ASP.NET 2.0에는 더 쉽게 작업을 수행할 수 있는 새 관리 웹 사이트 및 Microsoft 관리 콘솔도 포함되어 있습니다.

관리 웹 사이트

사용자 관리 프로세스를 간소화하기 위해 ASP.NET 2.0은 기본 제공 웹 사이트 구성 도구를 제공합니다. 웹 사이트 관리 도구는 Visual Studio 2005를 통해 localhost에서만 액세스할 수 있는 간단한 웹 사이트입니다. 관리자는 이 도구를 통해 사용자 관리, 개인 설정 공급자, 보안 및 프로필과 같은 서비스를 구성하여 애플리케이션을 관리할 수 있습니다. 또한 이 도구를 사용하면 애플리케이션에 대한 디버깅 및 추적 정보를 쉽게 구성할 수 있습니다.

Aa479401.migrateasp205(en-us,MSDN.10).gif

그림 5. 웹 사이트 관리 도구

이 도구는 로컬 애플리케이션으로 제한되지만 향상된 구성 및 관리 API를 통해 동일한 모든 구성 기능에 쉽게 액세스할 수 있습니다.

Microsoft 관리 콘솔 Snap-In

ASP.NET 2.0은 IIS용 특수 MMC(Microsoft Management Console) 스냅인을 배포하여 .NET Framework 버전을 사용해야 하는 애플리케이션을 결정할 수 있습니다.

Aa479401.migrateasp206(en-us,MSDN.10).gif

그림 6. ASP.NET 애플리케이션의 MMC 표시

MMC IIS 탭을 사용하면 애플리케이션에서 사용하는 ASP.NET 버전을 선택하고 Web.config 위치를 표시할 수 있습니다.

프레임워크 버전을 관리하는 것 외에도 콘솔에는 Web.config XML 파일을 직접 조작하지 않고도 대부분의 Web.config 설정을 시각적으로 편집할 수 있는 "구성 편집" 단추가 있습니다. 관리자는 이 MMC 스냅인이 단일 서버에서 여러 ASP.NET 애플리케이션을 구성하고 관리하는 데 매우 유용한 도구를 제공한다는 것을 알게 될 것입니다.

향상된 구성 API

클래스를 사용하여 구성 정보를 검색하고 편집할 System.Configuration.Configuration 수도 있습니다. 이러한 API를 사용하면 프로그래밍 방식으로 XML 구성 파일에 액세스할 수 있습니다. 이렇게 하면 사용자 지정 관리 도구를 개발할 수 있습니다. 다음 코드는 로컬 컴퓨터에서 애플리케이션에 대해 사용하도록 설정된 인증 유형을 표시합니다.

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
AuthenticationSection authSection = config.GetSection("system.web/authentication") as
                                    AuthenticationSection;
Response.Write("Authentication mode is: " + authSection.Mode); 

목록 3. 애플리케이션에 인증 유형 표시

다음 코드는 로컬 웹 애플리케이션에 대해 Forms 기반 인증을 사용하도록 설정합니다.

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
AuthenticationSection authSection = config.GetSection("system.web/authentication") as
                                    AuthenticationSection;
authSection.Mode = AuthenticationMode.Forms;
config.Save();

목록 4. 애플리케이션에 대해 Forms 인증 사용

이러한 네 가지 기능(IntelliSense, 관리 웹 사이트, MMC 스냅인 및 구성 API)은 모두 ASP.NET 애플리케이션을 구성하는 데 소요되는 시간과 노력을 줄이는 데 도움이 됩니다.

컴파일 옵션

ASP.NET 2.0은 웹 애플리케이션에 대해 다음과 같은 네 가지 컴파일 모델을 제공합니다.

  1. Normal(ASP.NET 1.x)- 일반 ASP.NET 웹 애플리케이션에서 파일 숨김 코드는 어셈블리로 컴파일되어 /bin 디렉터리에 저장되었습니다. ASPX(웹 페이지)가 요청 시 컴파일되었습니다. 이 모델은 대부분의 웹 사이트에서 잘 작동했습니다. 그러나 컴파일 프로세스로 인해 ASP.NET 페이지의 첫 번째 요청이 후속 요청보다 느려집니다. ASP.NET 2.0은 이 컴파일 모델을 계속 지원합니다.
  2. 일괄 처리 컴파일 — ASP.NET 2.0에서는 단일 URL 요청으로 모든 애플리케이션을 일괄 컴파일할 수 있습니다. ASP.NET 1.x와 마찬가지로 일괄 처리 컴파일은 첫 번째 페이지 요청의 지연을 제거하지만 시작 시 더 긴 주기 시간을 만듭니다. 또한 일괄 처리 컴파일에서는 파일 숨김 코드가 배포 전 컴파일되어야 합니다.
  3. 배포 사전 컴파일 — ASP.NET 2.0의 새로운 기능을 사용하면 배포 전에 프로젝트를 완전히 컴파일할 수 있습니다. 전체 컴파일에서 모든 코드 숨김 파일, ASPX 페이지, HTML, 그래픽 리소스 및 기타 백 엔드 코드는 애플리케이션의 크기와 컴파일 설정에 따라 하나 이상의 실행 가능한 어셈블리로 컴파일됩니다. 어셈블리에는 웹 사이트에 대해 컴파일된 모든 코드가 포함되며 리소스 파일 및 구성 파일은 수정 없이 복사됩니다. 이 컴파일 방법은 최고의 성능과 향상된 보안을 제공합니다. 눈에 잘 띄거나 보안이 높은 웹 사이트로 작업하는 경우 이 옵션이 최종 배포에 가장 적합한 선택입니다. 그러나 로컬 인트라넷에서 실행되는 작은 사이트를 빌드하고 사이트가 자주 변경되는 경우 전체 사전 컴파일이 종료될 수 있습니다.
  4. 전체 런타임 컴파일 — 배포 사전 컴파일의 다른 극단에서 ASP.NET 2.0은 런타임에 전체 애플리케이션을 컴파일하는 새로운 메커니즘을 제공합니다. 즉, 컴파일되지 않은 코드를 파일 및 기타 연결된 코드 뒤에 새 \code 디렉터리에 배치하고 ASP.NET 2.0이 런타임에 이러한 파일에서 생성될 어셈블리에 대한 참조를 만들고 유지 관리하도록 할 수 있습니다. 이 옵션은 컴파일되지 않은 코드를 서버에 저장하는 대신 웹 사이트 콘텐츠를 변경하는 측면에서 가장 뛰어난 유연성을 제공합니다.

최상의 컴파일 옵션을 선택하는 것은 정확한 상황과 요구 사항에 따라 달라집니다. 그러나 컴파일 모델은 여전히 유연합니다. \code 디렉터리를 사용하여 코드 숨김 파일을 저장하도록 선택한 경우에도 전체 컴파일 방법을 사용하여 애플리케이션을 배포할 수 있습니다.

ASP.NET 2.0 컴파일 모델을 사용하면 개발자가 코드를 미리 컴파일할 수 있습니다. 앞에서 설명한 대로 사전 컴파일은 상당한 성능 향상을 제공하지만 개발자는 여전히 이진 및 태그 콘텐츠를 구분할 수 있습니다. 개발자는 사전 컴파일 중에 .markup과 코드를 모두 이진 파일로 완전히 컴파일할 수 있습니다. 클래스 파생 모델은 태그 및 코드 숨김 파일을 동기화하도록 요구하는 문제를 제거합니다. 이를 통해 개발자는 태그 파일과 코드 숨김 파일을 분리할 수 있습니다. 다음 코드는 C# 및 Visual Basic .NET을 모두 사용하는 ASP.NET 2.0 페이지에 대한 페이지 지시문을 보여 줍니다.

// C# 
webform1.aspx: <%@ page codefile=webform1.aspx.cs inherits=WebForm1 %>
' Visual Basic .NET 
webform1.aspx.cs: public partial class WebForm1 : System.Web.UI.Page {}

목록 5. ASP.NET 2.0의 페이지 지시문

코드 컴파일 및 구성에 대한 자세한 설명은 ASP.NET 2.0 Internals를 참조하세요.

개발의 변경 내용

ASP.NET 2.0 및 Visual Studio 2005도 웹 애플리케이션 개발의 다양한 일상적인 측면을 변경합니다. 이 섹션에서는 ASP.NET 1.x에서 사용할 수 있는 기능이 크게 수정된 몇 가지 영역을 살펴보겠습니다.

개발 도구

Visual Studio의 최신 릴리스(Visual Studio 2005)에는 웹 애플리케이션을 빌드하는 데 도움이 되는 몇 가지 새로운 개발 도구가 포함되어 있습니다.

  • IntelliSense – 이제 모든 곳에서!

    IntelliSense를 사용하면 "팝업" 프로그래밍 힌트를 실행하여 코드를 더 빠르게 개발할 수 있습니다. 코드에서 개체를 참조할 때마다 IntelliSense는 사용 가능한 메서드, 속성 및 이벤트 목록을 제공합니다. 더 이상 전체 메서드를 입력하거나 매개 변수 사양에 대한 설명서를 검색할 필요가 없습니다. 이전 버전의 Visual Studio.NET 뛰어난 IntelliSense 지원을 받았지만 Visual Studio 2005를 사용하면 스크립트 블록, 인라인 CSS 스타일 특성, 구성 파일 및 DTD 또는 XML 스키마 참조가 포함된 XML 파일에서 IntelliSense를 활용할 수 있습니다.

  • 여러 작업에 대한 코드를 자동으로 생성하는 마법사

    ASP.NET 2.0의 주요 목표 중 하나는 개발 시간과 작성해야 하는 코드 줄 수를 줄이는 것입니다. Visual Studio 2005에는 데이터 원본 연결을 만드는 데 사용할 수 있는 마법사와 다른 많은 일반적인 작업이 포함되어 있습니다.

  • master 페이지, 테마 및 스킨에 대한 Designer 지원

    클래식 ASP 페이지에서는 각 페이지를 처음부터 시작해야 했습니다. 애플리케이션에서 페이지 레이아웃을 복제하는 것은 시간이 많이 걸리는 프로세스였습니다. Visual Studio 2005는 ASP.NET master 페이지에 대한 전체 WYSIWYG 지원을 제공합니다. 마스터 페이지는 애플리케이션의 각 페이지에 일관된 스타일과 레이아웃을 적용하는 데 사용할 수 있는 페이지 템플릿입니다. master 페이지를 만든 후에는 master 페이지를 활용하는 새 페이지를 쉽게 만들고 ASP.NET master 페이지의 스타일과 레이아웃을 자동으로 적용할 수 있습니다.

    Visual Studio 2005를 사용하면 master 페이지와 결합할 때 페이지에 추가하는 모든 콘텐츠가 어떻게 표시되는지 확인할 수 있습니다(master 페이지의 코드가 개발 페이지에서 숨겨져 있더라도).

  • 향상된 코드 편집 기능

    기존 ASP 애플리케이션에서는 코드 편집이 쉽지 않습니다. Visual Studio 2005를 사용하면 모든 HTML 코드(공백, 대/소문자, 들여찾기, 캐리지 리턴 및 단어 줄 바꿈 포함)를 유지하여 코드를 훨씬 쉽게 편집할 수 있습니다. Visual Studio 2005를 사용하면 전체 팀의 개발을 표준화하기 위해 가져오거나 내보낼 수 있는 애플리케이션의 HTML 코드에 대한 스타일 형식을 설정할 수 있습니다. 스타일시트를 사용하면 콘텐츠가 사용자에게 표시되는 방식의 서식을 지정할 수 있습니다. Visual Studio.NET 2005를 사용하면 HTML 코드 작성 방법에 대한 형식을 사용자 지정할 수 있습니다. 예를 들어 스타일 지침을 적용하여 모든 HTML 태그가 대문자로 표시되거나 중첩된 모든 HTML 요소가 두 개의 공백으로 들여쓰기되도록 할 수 있습니다. 이러한 지침을 통해 전체 개발 팀은 동일한 서식 규칙을 사용하여 페이지를 개발할 수 있습니다.

    Visual Studio 2005는 큰 문서를 편집하는 데 도움이 되는 태그 개요 및 태그 탐색 모드도 지원합니다. 이러한 모드를 사용하면 HTML 및 ASP.NET 태그를 이동, 확장 및 축소하고 열린 태그와 닫힌 태그 관계를 명확하게 볼 수 있습니다.

    "테이블 삽입" 대화 상자를 사용하여 HTML 페이지에 테이블을 쉽게 추가하고 편집할 수 있습니다. 마법사를 사용하면 코드를 작성하지 않고 테이블의 스타일, 크기(테이블 너비 및 행과 열 수) 및 형식을 지정할 수 있습니다.

    Visual Studio 2005를 사용하면 특정 웹 브라우저 또는 HTML 표준에 대한 HTML 코드를 개발할 수도 있습니다. 예를 들어 모든 HTML 코드가 Netscape의 표준을 준수하도록 하고, Netscape HTML을 대상으로 선택할 수 있으며, Netscape의 표준을 충족하지 않는 모든 코드는 실시간으로 플래그가 지정됩니다.

  • Visual Studio 2005에는 경량 웹 서버가 포함되어 있습니다.

    Visual Studio 2005에는 ASP.NET 애플리케이션을 개발하기 위한 경량 웹 서버가 포함되어 있습니다. 웹 서버는 로컬 요청만 서비스하며 개발에 적합합니다. 이 웹 서버를 추가하면 더 이상 개발 컴퓨터에서 IIS를 사용할 필요가 없습니다. 기본 제공 서버를 사용하고 전체 디버깅 지원을 받을 수 있습니다. 또 다른 중요한 장점은 모든 사용자가 애플리케이션을 빌드하고 테스트할 수 있다는 것입니다. 더 이상 컴퓨터의 관리자가 될 필요가 없습니다. IIS에서 최종 애플리케이션을 계속 배포해야 합니다.

  • 향상된 디버깅 환경

    ASP에서 애플리케이션 디버깅은 코드가 즉시 해석되므로 힘든 프로세스입니다. 구문 오류는 애플리케이션을 실행할 때까지 노출되지 않습니다. 디버깅 지원은 Visual Studio 2005에서 개선되었습니다. Visual Studio .NET 2003은 편집 및 계속 디버깅에 대한 제한된 지원을 제공했습니다. Visual Studio 2005는 편집 및 계속 디버깅을 개선하고 디버깅 프로세스 중에 자세한 정보를 제공합니다. 예를 들어 DataTips의 향상된 구현은 디버깅 프로세스 중에 마우스 팝업 창으로 변수 및 식에 대한 정보를 제공합니다. 또한 Visual Studio 2005는 디스어셈블리의 중단점을 사용하여 고급 디버깅, 레지스터, 주소(해당하는 경우) 및 "내 코드 단계만 실행"과 같은 추가 기능을 제공합니다.

Visual Studio 2005에서 제공하는 개발 도구에 대한 자세한 설명은 을 방문 https://msdn.microsoft.com/vstudio/하세요.

서버에 연결

ASP.NET 1.x 및 이전 버전의 Visual Studio .NET에서는 프런트 페이지 서버 확장을 통해 IIS instance 연결해야 했습니다. 개발자는 새 웹 사이트를 만들기 위해 IIS instance 대한 관리 액세스 권한도 있어야 했습니다. 많은 회사에서 회사 네트워크 내에서 실행되는 추가 웹 서버를 만들고, 모니터링하고, 업데이트하고, 유지 관리하는 관리 부담을 의심했습니다. ASP.NET 2.0에서는 서버에 대한 연결이 변경되었습니다.

개발 서버

먼저, 개발을 위해 Visual Studio 2005에는 개발 전용 웹 서버가 기본 제공됩니다. 이 경량 웹 서버는 로컬 요청에만 응답할 수 있으므로 보안 위협이 아닙니다. 그러나 서버는 전체 디버깅 기능을 지원하며 새 웹 애플리케이션을 위한 개발 도구로 사용할 수 있습니다. 확장성 및 성능을 테스트하거나 프로덕션용으로 배포할 준비가 되면 애플리케이션을 IIS로 이동하기만 하면 됩니다.

프로덕션 서버

IIS instance 연결할 때 이제 몇 가지 선택 사항이 있습니다. Visual Studio .NET에서 웹 애플리케이션 프로젝트를 열면 연결 방법을 선택하라는 메시지가 표시됩니다.

Aa479401.migrateasp207(en-us,MSDN.10).gif

그림 7. FTP를 통해 웹 애플리케이션에 연결

프런트 페이지 서버 확장, FTP, Share Point 또는 기타 여러 메커니즘을 사용하여 파일을 서버로 전송하고 코드를 동기화할 수 있습니다.

ASP.NET 2.0 애플리케이션 컴파일

기존 ASP.NET 1.x의 또 다른 주요 변경 사항에는 웹 애플리케이션을 컴파일할 수 있는 방법이 포함됩니다. ASP.NET 1.x에서 애플리케이션은 첫 번째 요청 또는 시작 시 일괄 처리 모드로 컴파일되었습니다. 두 방법 모두 장점과 단점이 있었습니다. 가장 주목할 만한 공유 단점은 일반적으로 컴파일되지 않은 코드를 프로덕션 서버에 배포해야 한다는 것입니다. 이 코드는 프로덕션 서버에서 직접 조작할 수 있습니다. 이는 보안 요구 사항에 따라 장점 또는 단점이었습니다.

ASP.NET 2.0은 독점 소스 코드를 배포를 위해 이진 어셈블리로 미리 컴파일하는 새로운 컴파일 메서드를 제공합니다. 미리 컴파일된 애플리케이션은 강력한 이름을 지정하고 서명할 수 있는 어셈블리와 공격자에게 중요한 값이 없는 이미지와 같은 다양한 리소스 파일로 구성됩니다. 따라서 미리 컴파일된 애플리케이션은 일반 ASP.NET 애플리케이션보다 훨씬 안전합니다.

컴파일 옵션에 대한 자세한 내용은 ASP.NET 2.0 Internals를 참조하세요.

웹 사이트에는 쾌적한 사용자 환경을 제공하기 위해 일관된 탐색이 필요합니다. 기존 ASP 애플리케이션은 하이퍼링크를 추가하거나 하이퍼링크를 캡슐화하는 사용자 컨트롤을 사용합니다. 이러한 하이퍼링크를 만드는 것은 시간이 많이 걸리는 프로세스이며 애플리케이션 내의 새 위치로 페이지를 이동할 때 종종 문제가 발생합니다. ASP.NET 1.x에는 이 문제에 대한 유용한 솔루션이 없었습니다. HTML 태그 또는 ASP.NET 컨트롤 속성 내에서 링크를 인코딩해야 했습니다. ASP.NET 2.0은 사이트 탐색을 개선하고 웹 페이지의 물리적 위치를 변경하는 유지 관리 작업을 줄이기 위한 많은 새로운 기능을 제공합니다.

ASP.NET 2.0을 사용하면 논리 구조에 따라 애플리케이션의 탐색을 정의할 수 있습니다. 탐색에 논리 구조를 사용하면 서버에서 각 페이지의 실제 위치에 따라 웹 페이지를 논리적으로 연결하여 애플리케이션에 대한 탐색 경로를 만들 수 있습니다. 탐색을 논리적으로 구성하면 코드를 수정하지 않고도 애플리케이션의 탐색을 다시 구성할 수 있습니다. 논리 구조를 사용하여 트리 뷰, 메뉴 및 "빵 부스러기" 트레일과 같은 탐색 보조 기능을 만들 수도 있습니다.

web.sitemap 파일

ASP.NET 2.0 SiteMap 클래스는 Website의 논리적 구조를 노출합니다. ASP.NET 2.0에 포함된 사이트 탐색 공급자에서 XML을 사용하여 기본 구조를 정의하거나 사용자 지정 공급자와 함께 다른 데이터 형식을 사용할 수 있습니다. 레이아웃을 정의한 후에는 여러 가지 방법으로 탐색 구조를 사용할 수 있습니다.

논리 구조는 다음 두 가지 쉬운 단계로 만들 수 있습니다.

  1. 계층적 방식으로 사이트의 페이지를 배치하는 web.sitemap이라는 XML 파일을 만듭니다. Visual Studio 2005를 사용하면 새 .sitemap 파일("새 항목 추가")을 만들고 사이트맵 템플릿을 선택할 수 있으며 사이트맵 파일을 편집할 때 IntelliSense 지원도 제공합니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap>
    <siteMapNode title="Home" url="default.aspx">
    <siteMapNode title="Article 1"  url="~/articles/demoarticle1.aspx" />
    <siteMapNode title="Article 2"  url="~/articles/demoarticle2.aspx" />
    <siteMapNode title="Article 3"  url="~/articles/demoarticle3.aspx" />
    </siteMapNode>
    <siteMapNode title="Picture Gallery" url="~/PhotoAlbum/PhotoAlbums.aspx">
    <siteMapNode title="Meetings" url="~/PhotoAlbum/PictureAlbum.aspx?albumid=1"/>
    <siteMapNode title="Activities"
    url="~/PhotoAlbum/PictureAlbum.aspx?albumid=2"/>
    <siteMapNode title="Training" url="~/PhotoAlbum/PictureAlbum.aspx?albumid=3"/>
    </siteMapNode>
    </siteMap>

    목록 6. 샘플 XML web.sitemap

  2. SiteMapDataSource 도구 상자에서 컨트롤을 끌어 페이지에 놓습니다. 컨트롤은 SiteMapDataSource web.sitemap 파일에 포함된 논리적 사이트 구조에 자동으로 바인딩됩니다.

컨트롤이 SiteMapDataSource 페이지에 있으면 컨트롤 또는 menu 컨트롤과 같은 다른 컨트롤에 treeview 쉽게 바인딩할 수 있습니다.

<%@ page language="VB" masterpagefile="~/Mysite.master" %>
  <asp:content id="Content1" contentplaceholderid="LeftSideContent">
    <H2>Navigation </H2>
    <asp:treeview id="Navigation tree" runat="server" datasourceid="NavSource"/>
 </asp:content> 

목록7. Treeview 컨트롤 구현

트리 뷰는 파일의 정의에 따라 계층적 보기를 사용하여 사이트 탐색을 web.sitemap 표시합니다.

ASP.NET 2.0에는 사이트 탐색 서비스와 함께 사용할 수 있는 탐색 컨트롤 집합도 도입되었습니다. 또는 <asp:Menu> 컨트롤을 <asp:TreeView> 사용하여 애플리케이션에 대한 시각적 탐색 구조를 만들 수 있습니다. 새 <asp:SiteMapPath> 컨트롤을 사용하여 "이동 경로 경로" 탐색 구조를 생성할 수 있습니다.

Aa479401.migrateasp208(en-us,MSDN.10).gif

그림 8. 홈 /기사 / 기사 2 페이지에 대한 빵 부스러기 흔적

사이트 탐색 및 탐색 컨트롤에 대한 자세한 설명은 파워 포인트 프레젠테이션 https://www.asp.net/whidbey/downloads/WSV315_Sanabria_slide.zip을 참조하세요.

URL 매핑

ASP.NET 2.0의 또 다른 새로운 탐색 관련 기능은 URL 매핑입니다. 웹 사이트에는 길고 복잡하며 복잡한 URL이 필요한 경우가 많습니다(MSDN 참조를 생각해 보세요!). 클래식 ASP 애플리케이션에서 URL을 숨기려면 요청을 미리 처리하기 위해 사용자 지정 ISAPI 처리기를 작성해야 했습니다. ASP.NET 2.0은 구성 섹션을 URLMapping Web.config 파일에 추가합니다. 개발자는 실제 URL을 더 사용자에게 친숙한 URL에 매핑하여 숨기는 매핑을 정의할 수 있습니다.

<urlMappings enabled="true">
    <add url="~/Home.aspx" mappedUrl="~/Default.aspx?tabid=0" />
</urlMappings>

8.URLMapping 구성 섹션 나열

위에 표시된 구성은 에 대한 Home.aspx 모든 요청을 에 매핑(및 리디렉션)합니다 Default.aspx?tabid=0. 사용자는 짧은 링크를 책갈피로 표시할 수 있으며, 짧은 링크가 브라우저에 표시됩니다.

데이터 액세스 및 데이터 원본

ASP.NET 1.x 데이터 액세스는 ADO.NET 연결 및 명령을 활용하여 다양한 ASP.NET 컨트롤에 바인딩할 수 있는 데이터를 제공합니다. ASP.NET 2.0은 Web.config 파일 내의 단일 XML 태그에 연결과 명령을 모두 만드는 코드를 캡슐화하는 데이터 원본을 제공하여 ADO.NET 관계를 개선합니다. ASP.NET 1.x와 마찬가지로 Visual Studio 2005 내에서 마법사를 사용하여 이러한 데이터 원본을 만들 수 있습니다. ASP.NET 2.0은 다음을 위한 데이터 원본과 함께 제공됩니다.

  • Microsoft Access - 액세스 데이터 원본은 Access 데이터베이스에 자동으로 연결하고 쿼리할 수 있습니다.
  • 개체- 컨트롤은 OjbectDataSource 중간 계층 또는 다른 개체 집합 위에 있는 데이터 계층 추상화입니다. 하나 이상의 개체 집합을 데이터 바인딩된 컨트롤에 연결할 수 있는 데이터로 처리하려는 경우 개체 데이터 원본을 사용할 수 있습니다.
  • XML - XmlDataSource XML 파일의 계층적 데이터에 대한 링크입니다.
  • 사이트 맵 - 는 SiteMapDataSource 이동 경로 부스러기를 포함하여 사이트 탐색 컨트롤에 대한 데이터 원본을 제공합니다.

새 데이터 바인딩된 컨트롤

ASP.NET 2.0에는 두 개의 새로운 데이터 바인딩된 컨트롤도 포함됩니다. 첫 번째 컨트롤 GridView인 은 셀 편집을 DataGrid 위한 구성 가능한 코드를 제공하고, 여러 페이지에 행을 표시하고, 정렬, 삭제, 선택 및 기타 일반적인 동작을 제공하여 에서 확장됩니다.

Aa479401.migrateasp209(en-us,MSDN.10).gif

그림 9. GridView 컨트롤

두 번째 컨트롤인 DetailsView는 및 DataGrid를 모두 GridView 보완하는 세부 정보 보기를 제공합니다.

Aa479401.migrateasp210(en-us,MSDN.10).gif

그림 10. DetailsView 컨트롤

컨트롤은 DetailsView 한 번에 하나의 레코드를 표시하므로 레코드가 표시, 편집, 삭제 또는 생성되는 방식을 훨씬 더 크게 제어할 수 있습니다.

ASP.NET 2.0의 새로운 기능

API 또는 프레임워크에 대한 거의 모든 주요 업데이트에는 기존 기능에 대한 변경 내용과 새로운 기능 및 향상된 기능이 모두 포함됩니다. 이 섹션에서는 ASP.NET 2.0에서 사용할 수 있는 몇 가지 새로운 기능을 살펴보겠습니다.

마스터 페이지

마스터 페이지는 사이트에서 일관된 모양과 느낌을 유지하기 위해 단일 위치를 정의하여 웹 애플리케이션의 개발 시간을 줄이는 데 도움이 되는 ASP.NET 2.0에 도입된 새로운 기능입니다. 마스터 페이지를 사용하면 애플리케이션의 여러 페이지에 대한 공통 레이아웃을 생성하는 데 사용할 수 있는 템플릿을 디자인할 수 있습니다. master 페이지의 주요 목표는 각 페이지를 처음부터 만들고 레이아웃 코드를 반복할 필요가 없도록 하는 것입니다. master 페이지를 사용하는 또 다른 이점은 애플리케이션에서 페이지의 레이아웃을 변경하려는 경우 각 개별 페이지가 아닌 master 페이지만 업데이트해야 한다는 것입니다. 이 기능은 원래 버전의 .NET Framework 사용 가능하고 데스크톱 애플리케이션 개발에 사용되는 Visual Inheritance의 Windows Form 기술과 다소 유사합니다.

master 페이지는 확장(.aspx 대신 .master)과 일부 특수 컨트롤 및 헤더 필드를 제외하고 일반 ASP.NET 웹 페이지처럼 보입니다. 마스터 페이지에는 하나 이상의 <asp:ContentPlaceHolder> 컨트롤이 포함되어야 합니다. 이러한 컨트롤은 대체 가능한 콘텐츠 영역을 나타냅니다. 기본적으로 에 없는 ContentPlaceHolder 모든 항목은 master 페이지를 사용하는 페이지에 표시됩니다.

Visual Studio 2005는 이 코드의 대부분을 자동으로 생성하므로 페이지 레이아웃에 대해 복잡한 HTML 코드를 작성할 필요가 없습니다. master 페이지에는 다음 기본 소스 코드도 포함되어야 합니다.

<%@ master language="C#" CodeFile="site.master.cs" Inherits ="ASP.site_master" %>
<html>
<head runat="server"><title>Untitled Page</title></head>
<body>
  <form runat="server">
    <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
    </asp:contentplaceholder>
  </form>
</body>
</html>

목록 9. 각 master 페이지에 추가된 소스 코드

이러한 키 변경 외에 master 페이지에는 일반 ASP.NET 페이지에서 찾을 수 있는 HTML 또는 컨트롤이 포함될 수 있습니다.

master 페이지와 프레임은 비슷한 용도로 사용되지만 master 페이지는 훨씬 더 많은 기능을 제공합니다. 프레임과 달리 master 페이지를 사용하면 다음을 수행할 수 있습니다.

  • 페이지를 책갈피로 지정하고 기본 프레임 페이지뿐만 아니라 특정 페이지의 모든 정보를 회수합니다. master 페이지는 실제로 프레임이 아닙니다. master 페이지의 데이터 정렬된 콘텐츠와 master 빌드되는 콘텐츠 페이지가 포함된 단일 페이지입니다. 따라서 프레임이 아닌 단일 웹 페이지처럼 보이고 작동합니다.
  • HTML이 아닌 컨트롤과 태그를 사용하여 작업합니다. Visual Studio 덕분에 각 프레임이 올바른 방식으로 표시되도록 프레임 태그를 열고 닫거나 수많은 html 특성을 수정하는 것에 대해 걱정할 필요가 없습니다. Visual Studio를 통해 자리 표시자를 만들고 해당 속성을 수정하기만 하면 됩니다.
  • Visual Studio 2005 코드 생성을 활용하여 레이아웃을 시각적으로 디자인하고, 프레임을 관리하고, 모든 배관을 제공하여 콘텐츠 페이지를 master 페이지에 연결합니다. 페이지의 전체 HTML 레이아웃이 영향을 받을 것을 걱정할 필요 없이 새 콘텐츠를 추가할 수 있습니다.

요컨대, master 페이지는 관련된 페이지 수에 관계없이 웹 애플리케이션을 일관되게 보이게 하는 작업을 크게 간소화합니다.

콘텐츠 페이지

콘텐츠 페이지는 master 페이지에 연결되고 master 페이지의 모든 ContentPlaceHolder 컨트롤에 대한 콘텐츠를 정의합니다. 콘텐츠 페이지에는 id를 <asp:content> 통해 master 페이지의 컨트롤을 참조 <asp:contentPlaceHolder> 하는 컨트롤이 ContentPlaceHolder 포함되어 있습니다. 콘텐츠 페이지와 master 페이지가 결합되어 단일 응답을 형성합니다.

<%@ page language="VB" MasterPageFile="~/Mysite.master" %>
<asp:content id="Content1"  contentplaceholderid="LeftSideContent">
    <H2>Navigation </H2>
    <asp:treeview id="Navigation tree" runat="server" datasourceid="NavSource"/>
</asp:content>
<asp:content id="Content1"  contentplaceholderid="RightSideContent">
    <asp:label runat="server">Support section</asp:label>
</asp:content>

목록 10. master 페이지의 콘텐츠 페이지 자리 표시자

다시 한 번 사용자는 실제로 콘텐츠 페이지에 대한 요청을 합니다. ASP.NET master 페이지에 대한 참조를 확인하고 콘텐츠 페이지와 함께 master 페이지 콘텐츠를 렌더링합니다.

중첩된 마스터 페이지

특정 경우에 사이트 레이아웃 및 스타일에 대한 제어를 강화하려면 master 페이지를 중첩해야 합니다. 예를 들어 회사에는 모든 페이지에 대한 상수 머리글과 바닥글이 있는 웹 사이트가 있을 수 있지만 회계 부서에는 IT 부서와 약간 다른 템플릿이 있습니다.

Aa479401.migrateasp211(en-us,MSDN.10).gif

그림 11. 중첩된 마스터 페이지

최상위 회사 master 페이지 내에 개별 부서 master 페이지를 중첩하면 콘텐츠 및 master 페이지로 재정의할 수 있는 항목을 제어하면서 각 부서에 대해 높은 수준의 일관성을 구현할 수 있습니다.

기억해야 할 핵심은 애플리케이션이 여러 master 페이지 및 콘텐츠 페이지에서 콘텐츠를 컴파일할 수 있더라도 최종 사용자가 한 페이지를 요청하고 한 페이지를 수신한다는 것입니다.

마스터 페이지 재정의

최상의 계획 및 요구 사항 검토에도 불구하고 특정 웹 페이지에 새 기능을 추가해야 하는 상황이 발생합니다. 특정 콘텐츠 페이지에서 기능을 추가하거나 제거하기 위해 master 페이지를 중단하려는 경우 master 페이지를 재정의할 수 있습니다.

예를 들어 특정 콘텐츠 페이지가 master 페이지에 기본 제공된 표준 탐색 모음을 표시하지 않으려는 경우를 생각해 보세요. 구성 가능한 속성을 master 페이지에 추가하는 경우 각 콘텐츠 페이지에 대해 탐색 모음을 설정하거나 해제하도록 결정할 수 있습니다.

테마 및 스킨

현재 ASP 개발자는 CSS(계단식 스타일시트) 및 인라인 스타일을 사용하여 웹 사이트에서 모양과 느낌을 적용해야 합니다. 이러한 기술이 도움이 되지만 일관성은 여전히 올바른 스타일을 사용하는 개발자 분야의 기능입니다. ASP.NET 2.0은 웹 사이트의 모든 페이지와 컨트롤에 균일하게 적용되는 테마 및 스킨을 사용하여 이 문제를 해결합니다.

테마는 컨트롤 집합에 대한 특정 모양을 만들기 위해 함께 그룹화된 스킨 파일 집합입니다.

테마

테마와 스타일시트 모두 테마 또는 스타일시트가 적용되는 페이지에 적용되는 공통 특성 집합을 정의한다는 측면에서 테마는 CSS 스타일시트와 유사합니다. 그러나 테마는 다음과 같은 방식으로 스타일시트와 다릅니다.

테마는 특정 스타일 속성 집합뿐만 아니라 컨트롤 또는 페이지의 여러 속성을 정의할 수 있습니다.

테마에는 CSS 스타일시트에 포함할 수 없는 보조 파일(예: 그래픽)이 포함될 수 있습니다.

테마는 스타일시트가 수행하는 방식과 연계되지 않습니다(예: 테마 속성 값은 항상 로컬 속성 값을 재정의).

테마에는 스타일시트 참조가 포함될 수 있습니다.

각 애플리케이션에는 테마 디렉터리가 있습니다. 각 특정 테마에는 스킨 파일 및 스타일에 적용되는 다른 파일이 포함된 자체 하위 디렉터리가 있습니다.

테마 정의

스킨을 정의하고 App_Themes 디렉터리에서 유래한 하위 디렉터리에 배포할 수 있습니다. 각 하위 디렉터리가 여러 스킨 파일을 포함할 수 있는 테마를 구성합니다. App_themes 하위 디렉터리에는 .skin 파일뿐만 아니라 테마에서 사용하는 다른 리소스(예: 이미지 파일 및 스타일시트)가 포함됩니다.

Aa479401.migrateasp212(en-us,MSDN.10).gif

그림 12. 하위 디렉터리 App_themes

실제 스킨 정의는 .skin 파일에 포함되어 있으며 ASPX 파일에서 컨트롤 인스턴스를 선언하는 데 사용되는 태그와 매우 유사합니다.

예를 들어 app_themes 디렉터리에서 Pink라는 하위 디렉터리를 만듭니다. 테마에 대한 .skin 파일을 만들려면 다음 코드를 추가하고 Pink 디렉터리에 저장하기만 하면 됩니다.

<asp:DropDownList runat="server" BackColor="hotpink" ForeColor="white" />
<asp:GridView runat="server" BackColor="#CCCCCC" BorderWidth="2pt"
    BorderStyle="Solid" BorderColor="#CCCCCC" GridLines="Vertical"
    HorizontalAlign="Left">
      <HeaderStyle ForeColor="white" BackColor="hotpink" />
      <ItemStyle ForeColor="black" BackColor="white" />
      <AlternatingItemStyle BackColor="pink" ForeColor="black" />
</asp:GridView>

목록 11. 사용자 지정 테마에 대한 일반적인 .skin 파일

그런 다음 이 테마를 애플리케이션의 페이지에 적용할 수 있습니다. 물론 데이터 그리드의 배경이 핫 핑크로 바뀝니다. 이는 바람직한 효과가 아닐 수 있습니다.

테마 사용

테마를 적용할 수 있습니다.

단일 태그를 사용하는 페이지 수준에서: <%@ page language="VB" theme="pink" %>

Web.config 파일 내의 구성 요소를 사용하는 사이트 전체: <pages theme="Pink" />. Web.config 파일은 각 ASP.NET 애플리케이션에 대한 master 구성 파일입니다.

그림 13에서 공통 달력 컨트롤을 검사하면 테마의 효과를 볼 수 있습니다.

Aa479401.migrateasp213(en-us,MSDN.10).gif

그림 13. 파란색 테마가 있는 달력

이 버전의 달력은 간단한 파란색 테마를 사용합니다. 그림 14와 같이 테마 특성을 변경하기만 하면 달력의 모양을 완전히 변경할 수 있습니다.

Aa479401.migrateasp214(en-us,MSDN.10).gif

그림 14. 회색 테마가 있는 일정

스킨

skin 페이지에서 컨트롤의 크기, 글꼴 및 기타 특성을 표준화하는 데 사용할 수 있는 속성 및 템플릿 집합입니다. 스킨을 사용하여 컨트롤에 대해 미리 정의된 디스플레이 설정을 만들고 런타임에 적절한 스킨을 적용할 수 있습니다. 예를 들어 사용자 기본 설정에 따라 스킨을 선택하거나 페이지에 액세스하는 데 사용되는 브라우저에 따라 적절한 스킨을 결정할 수 있습니다. 속성을 설정하여 미리 정의된 컨트롤에 선택적 스킨을 SkinId 적용할 수 있습니다.

<!- Default Skin -->!>
<asp: label runat="server" Font-names="verdana, arial" font-size="10pt"
      ForeColor= "#000066" BackColor="transparent"
/>
<!- Title Skin -->!>
<asp: label runat="server" id="foo" skinid="Title" Font-names="verdana, arial"
      font size="18pt" ForeColor= "#000066" BackColor="transparent" font-bold="true"
      font-underline="true"
/>

목록 12. 스킨 만들기

스킨이 정의되면 테마 및 속성을 사용하여 페이지의 모든 컨트롤 또는 특정 컨트롤에 SkinID 적용할 수 있습니다.

컨트롤에 스킨 적용

기본 스킨이 있고 페이지가 테마로 정의되면 기본 스킨이 컨트롤에 자동으로 적용됩니다. 정의 하는 경우는 SkinID 컨트롤에 대 한 속성을 기본 스킨에서 참조 SkinID 되는 스킨으로 대체 됩니다는 속성입니다.

Membership

ASP 개발의 주요 단점 중 하나는 사용자 관리 체계를 처음부터 만들어야 한다는 것입니다. 이 프로세스는 복잡할 뿐만 아니라 시간이 많이 걸립니다. ASP.NET 2.0의 멤버 자격 공급자 및 로그인 컨트롤은 사용자 정보를 관리하는 통합된 방법을 제공합니다.

사용자가 애플리케이션에 로그인할 때마다 해당 ID와 기본 사용자 정보를 자동으로 참조할 수 있습니다. 사용자의 자격 증명은 Web.config 파일에서 구성할 수 있는 백 엔드 사용자 데이터베이스에 안전하게 저장됩니다. ASP.NET 2.0은 SQL Server 2005 Express Edition 공급자와 SQL Server 공급자를 모두 제공하지만 모든 유형의 백 엔드 데이터 저장소에 대한 사용자 지정 공급자를 만들 수 있습니다. 이 확장성은 ASP와 함께 사용하려는 계정 데이터베이스가 이미 있는 경우 매우 유용합니다. NET의 멤버 자격 기능. 애플리케이션에 대한 멤버 자격을 구성한 후 ASP.NET 2.0의 로그인 컨트롤을 사용하여 사용자 등록 및 암호 검색을 자동화할 수 있습니다.

로그인 컨트롤

ASP.NET 2.0은 코드를 작성하지 않고도 사용자 계정을 만들고 관리하는 데 도움이 되는 새로운 로그인 컨트롤을 제공합니다. 컨트롤을 <asp:CreateUserWizard> 페이지로 끌어서 사용자가 등록 프로세스를 안내하는 단계별 마법사를 제공하는 사용자 등록 양식을 만들 수 있습니다.

새 로그인 컨트롤은 애플리케이션의 디자인과 일치하도록 컨트롤의 서식을 지정할 수 있는 직관적인 인터페이스를 제공합니다. 속성 창을 사용하면 각 속성에 대한 레이블, 값 및 오류 메시지 유효성 검사 요소에 액세스할 수 있습니다. 및 LoginStatus 컨트롤을 LoginName 사용하면 이제 코드를 작성하지 않고도 각 사용자에게 개인 설정된 인사말을 제공하고 로그인/로그아웃 기능을 만들 수 있습니다.

LoginView 컨트롤을 사용하면 한 줄의 코드를 작성하지 않고도 사용자에게 표시되는 콘텐츠를 확인할 수 있습니다. 콘텐츠는 각 사용자의 상태 및 역할을 검사하여 적절한 보기를 확인하여 표시됩니다. 기존 ASP 애플리케이션에서는 현재 사용자를 식별하는 코드, 사용자의 상태 유효성을 검사하는 추가 코드, 사용자를 기반으로 콘텐츠를 표시하는 더 많은 코드를 작성해야 했습니다.

사용자는 암호를 잊어버린 경우가 많습니다. ASP.NET 2.0은 잊어버린 암호를 검색하는 프로세스를 간소화하기 위해 보안 PasswordRecovery 제어를 구현합니다. 컨트롤은 사용자에게 사용자 이름을 묻는 메시지를 표시하고 이메일을 통해 암호를 보냅니다. 전자 메일을 보내려면 전자 메일을 보내는 SMTP 서버를 가리키도록 Web.config 파일을 편집해야 합니다.

<smtpMail
   serverName="localhost">
</smtpMail>

목록 13. Web.config SMTP 서버 구성

인증 컨트롤에 대한 자세한 설명은 ASP.NET 2.0을 사용한 개인 설정을 참조하세요.

Profiles

ASP.NET 2.0 프로필 기능을 사용하면 웹 사이트를 방문하는 모든 사용자와 관련된 정보를 정의, 저장 및 검색할 수 있습니다. 기존 ASP 애플리케이션에서는 사용자에 대한 데이터를 수집하고, 사용자 세션 중에 세션에 저장하고, 사용자가 웹 사이트를 떠날 때 일부 영구 데이터 저장소에 저장하는 고유한 코드를 개발해야 합니다. ASP.NET 2.0은 프로필을 사용하여 이 모든 기능을 자동화합니다. 프로필은 기본적으로 사용자와 연결된 정보의 버킷이며 모든 ASPX 페이지에서 액세스할 수 있는 개체를 통해 Profile 직접 액세스할 수 있습니다.

프로필 정의

machine.config 또는 Web.config 내에서 각 사용자의 이름, 청구 주소 및 이메일 주소와 같은 정보를 나타내는 값으로 프로필을 <property> 정의할 수 있습니다. 논리 속성 그룹을 만들 수도 있습니다.

<profile>
<properties>  
  <group name="BillingAddress">
      <add name="Street" type="System.String" />
      <add name="City" defaultValue="Toronto" type="System.String" />
      <add name="StateProv" type="System.String" />
      <add name="ZipPostal" type="System.String" />
  </group>
</properties>
</profile>

목록 14. 프로필 정의

프로필을 정의하면 ASP.NET 및 프로필 공급자는 요청에 따라 로드하고 사용자가 사이트를 떠날 때 저장하는 등 이 정보를 자동으로 관리합니다.

프로필 사용

프로필을 정의한 후에는 Visual Studio 2005에서 Profile 개체를 통해 프로필 속성을 자동으로 노출합니다.

Aa479401.migrateasp215(en-us,MSDN.10).gif

그림 15. 프로필 사용

Visual Studio 2005는 프로필에 대한 전체 IntelliSense 지원도 제공합니다. 프로필 정의를 변경한 경우 Visual Studio는 Web.config 파일을 저장한 즉시 올바른 IntelliSense를 자동으로 제공합니다.

웹 파트

웹 애플리케이션과 데스크톱 애플리케이션 간의 주요 차이점 중 하나는 데스크톱 애플리케이션에 여러 구성 가능한 구성 요소를 포함할 수 있는 용이성이었습니다. 예를 들어 Visual Studio IDE 자체를 고려합니다. 사용자는 표시할 화면과 정렬 방법을 결정할 수 있습니다. 웹 사이트에서 유사한 기능을 개발하는 것은 어려운 일입니다.

ASP.NET 2.0에서는 웹 파트 형식으로 이 문제에 대한 해결 방법을 소개합니다. 웹 파트는 불필요한 세부 정보로 복잡하지 않은 생산적인 인터페이스를 만들기 위해 사용자가 포함 및 정렬할 수 있는 모듈식 구성 요소입니다. 사용자는 다음을 수행할 수 있습니다.

  • 표시할 부분 선택
  • 순서 또는 정렬로 파트 구성
  • 한 웹 세션에서 다음 웹 세션으로 보기 저장
  • 특정 웹 파트의 모양을 사용자 지정합니다.

이러한 모든 기능은 일반 웹 애플리케이션에서 구현하는 것은 사실상 불가능합니다.

웹 파트를 모듈식 웹 페이지 블록으로 간주할 수 있습니다. 각 블록은 런타임에 동적으로 웹 페이지에서 추가하거나 제거할 수 있습니다. 웹 파트를 구성하고 조작하기 위한 코드는 ASP.NET 2.0에 기본 제공됩니다. 레이아웃 추가, 제거 및 구성을 위한 모든 기능은 웹 파트 시스템에서 자동으로 처리됩니다. 프로그래머가 웹 파트를 빌드하고 웹 파트 영역에 할당하기만 하면 됩니다. 사용자는 웹 파트를 혼합 및 일치시키고, 순서대로 표시하고, 사이트 방문 사이에 구성이 저장될 것으로 예상할 수 있습니다.

웹 파트 사용

예를 들어 병원에 대한 웹 파트 애플리케이션을 사용하면 사용자가 현재 환자 상태 약물 상호 작용에 대한 경고에 이르기까지 다양한 디스플레이 구성 요소 중에서 선택할 수 있습니다. 각 사용자는 카탈로그에서 표시할 파트를 선택할 수 있습니다.

Aa479401.migrateasp216(en-us,MSDN.10).gif

그림 16. 웹 파트 카탈로그

그런 다음 사용자는 컨트롤을 끌어서 특정 요구 사항에 가장 적합한 배열로 놓을 수 있습니다.

Aa479401.migrateasp217(en-us,MSDN.10).gif

그림 17. 웹 파트 정렬

레이아웃 및 구성은 사용자의 다음 방문을 위해 자동으로 저장됩니다. 웹 파트에 대한 자세한 설명은 ASP.NET 2.0을 사용하여 개인 설정을 참조하세요.

요약

ASP.NET 2.0은 웹 애플리케이션 개발을 위해 확장 가능하고 확장 가능하며 구성 가능한 프레임워크를 제공하여 ASP.NET 1.x의 발자취를 따라 계속 진행됩니다. 컴파일 및 배포를 위한 다양한 옵션을 지원하도록 ASP.NET 핵심 아키텍처가 변경되었습니다. 또한 개발자는 Visual Studio 2005의 새로운 컨트롤, 새 마법사 및 새로운 기능으로 인해 많은 기본 작업이 더 쉬워졌습니다. 마지막으로 ASP.NET 2.0은 개인 설정, 테마 및 스킨 및 master 페이지에 대한 혁신적인 새로운 컨트롤을 도입하여 옵션 팔레트를 더욱 확장합니다. 이러한 모든 향상된 기능은 ASP.NET 1.1 프레임워크를 기반으로 하여 .NET 프레임워크 내에서 웹 개발을 위한 더 나은 옵션 집합을 제공합니다.

 

작성자 정보

Jayesh Patel — Jay Patel은 .NET 및 Java Technologies의 개발자입니다. Jay의 연구는 패턴 기반 프로그래밍 및 민첩한 방법론에 중점을 둡니다.

Bryan Acker— Bryan Acker는 주입 개발 기술 작가입니다. Bryan은 ASP 및 ASP.NET 웹 개발 및 웹 호스팅에 대한 강력한 배경을 가지고 있습니다.

Robert McGovern — Rob McGovern은 주입 개발의 선임 작가, 개발자 및 프로젝트 관리자입니다. Rob은 ASP.NET CodeNotes 및 마이그레이션 가이드를 ASP.NET JSP를 비롯한 여러 ASP.NET 프로젝트에 참여했습니다. Rob은 Virtual Earth용 Microsoft MVP이기도 합니다.

Infusion Development Corporation은 금융 서비스 산업에 중점을 둔 포춘지 선정 1000대 기업을 위한 맞춤형 소프트웨어 개발, 교육 및 컨설팅 서비스를 제공하는 Microsoft-Certified 솔루션 공급자입니다. 뉴욕과 토론토에 지사를 두고 있는 Infusion Development는 금융 서비스, 증권 중개 및 소프트웨어 개발 산업에서 세계 최대 기업을 포함한 국제 고객 기반을 구축했습니다.

© Microsoft Corporation. All rights reserved.