소개: ASP.NET 웹 사이트 계획
업데이트: 2007년 11월
웹 사이트를 만들려면 페이지를 만들고 코드를 작성하기 전에 사이트에 대한 계획을 세우는 것이 좋습니다. 사이트에 대한 계획을 미리 세우면 사이트 및 사이트 탐색의 전체적인 모양을 손쉽게 만들 수 있습니다.
대개 웹 사이트의 크기에 따라 수행해야 하는 계획의 규모가 결정됩니다. 정적 정보만 제공하는 작은 브로슈어 형식의 웹 사이트는 계획 노력이 적게 들어가는 비교적 기본적인 사이트일 수 있습니다. 데이터 저장소에 액세스하고 사용자를 인증하며 지역화 및 내게 필요한 옵션 제약 조건이 있는 웹 사이트는 계획 노력이 더 소요될 수 있습니다. 계획을 세워 놓으면 사이트의 개발 및 유지 관리에 들어가는 시간이 절감됩니다.
다음 항목에서는 아래 정보와 같이 전체 웹 사이트와 관련된 정보를 다룹니다.
선택하는 웹 사이트의 형식
사이트 탐색 방식
사이트의 모든 페이지에 대해 일관된 모양과 레이아웃을 만드는 방법
데이터 저장소에서 데이터에 액세스하는 방법
웹 사이트 프로젝트 형식 결정
Visual Studio 2008에서 만들 수 있는 프로젝트 형식에는 두 가지가 있습니다. 기본 웹 사이트 프로젝트 모델에서는 파일 디렉터리 구조를 사용하여 프로젝트의 내용을 정의합니다. 이 모델에는 프로젝트 파일이 없으며 디렉터리에 있는 모든 파일이 프로젝트에 포함됩니다.
반면, 웹 응용 프로그램 프로젝트에서는 솔루션의 프로젝트 파일을 통해 명시적으로 참조하는 파일만 프로젝트에 포함됩니다. 이러한 파일은 솔루션 탐색기에 표시되며 빌드 과정에서 이러한 파일만 컴파일됩니다.
웹 응용 프로그램 프로젝트의 프로젝트 파일을 사용하면 일부 시나리오를 더 쉽게 구현할 수 있습니다. 예를 들어 서로 다른 프로젝트 파일에서 파일을 참조하여 ASP.NET 응용 프로그램 하나를 여러 Visual Studio 프로젝트로 분할할 수 있습니다. 또한 프로젝트에서 파일을 손쉽게 제외할 수 있습니다.
다음과 같은 작업을 수행하려는 경우 웹 응용 프로그램 프로젝트를 사용합니다.
매우 큰 Visual Studio .NET 2003 응용 프로그램을 Visual Studio 2008로 마이그레이션
출력 어셈블리의 이름 제어
독립 실행형 클래스를 사용하여 페이지 클래스와 사용자 정의 컨트롤 클래스 참조
여러 웹 프로젝트를 사용하여 웹 응용 프로그램 빌드
컴파일하는 동안 빌드 전 및 빌드 후 단계 추가
데이터 저장소에서 데이터에 액세스
ASP.NET 데이터 바인딩을 사용하면 구성 요소를 데이터 소스는 물론 간단한 속성, 컬렉션, 식 및 메서드에 바인딩할 수 있습니다. 이렇게 하면 데이터베이스나 기타 소스의 데이터를 사용할 때 유연성이 높아집니다.
웹 사이트에서 데이터 저장소에 액세스하는 경우에는 데이터 소스 컨트롤이 공통 데이터 패턴의 일부이므로 이러한 컨트롤을 사용하는 방안을 고려해야 합니다. 이 데이터 패턴은 데이터 액세스 코드 및 비즈니스 논리 코드를 웹 사이트의 프레젠테이션 계층을 형성하는 웹 페이지와 분리합니다. 데이터 액세스 계층은 데이터 저장소에 액세스하는 데 사용되는 메서드로 구성되어 있습니다. 비즈니스 논리 계층은 데이터를 보거나 변경할 수 있는 사용자에 대해 액세스를 제한하는 등의 규칙을 데이터 액세스 계층에 추가합니다. 프레젠테이션 계층은 사용자가 데이터를 보거나 수정하기 위해 액세스하는 페이지로 구성되어 있습니다. 이러한 계층을 만드는 방법에 대한 자세한 내용은 연습: ASP.NET에서 데이터 액세스 및 비즈니스 논리 계층 만들기를 참조하십시오.
이러한 공통 데이터 패턴은 ASP.NET의 데이터 소스 모델을 사용하여 프레젠테이션 계층을 데이터 및 비즈니스 논리 계층과 분리함으로써 구현할 수 있습니다. 프레젠테이션 계층과 분리된 데이터 액세스 계층 및 비즈니스 논리 계층은 LinqDataSource, ObjectDataSource, SqlDataSource 등의 컨트롤을 사용하여 만듭니다.
또한 웹 사이트에서 메모리 내(캐시된) 데이터를 사용해야 하는지 여부도 고려해야 합니다. 응용 프로그램 데이터의 상당 부분이 자주 변경되지 않고 세션이나 사용자 간에 공통적인 경우 데이터를 웹 서버의 메모리 내에 보관할 수 있습니다. 이렇게 하면 데이터베이스에 대한 요청 횟수가 줄어들고 사용자의 상호 작용 속도가 증가할 수 있습니다. 메모리 내 데이터베이스는 DataSet 클래스를 사용하여 만듭니다. DataSet 개체의 또 다른 유용한 측면은 이 개체를 사용할 경우 응용 프로그램에서 하나 이상의 데이터 소스에 있는 데이터를 응용 프로그램 공간으로 가져올 수 있다는 점입니다. 그러면 응용 프로그램에서 데이터의 관계 모양을 유지하면서 메모리의 데이터를 처리할 수 있습니다.
사이트 탐색
사이트의 규모가 커지고 사이트에서 탐색할 페이지의 수가 늘어남에 따라 모든 링크를 관리하기가 힘들어질 수 있습니다. ASP.NET 사이트 탐색은 사용자가 일관된 방식으로 사이트를 탐색할 수 있도록 기능을 제공하는 서버 컨트롤 및 클래스로 구성되어 있습니다. 모든 페이지에 대한 링크를 중앙에 저장할 수 있습니다(대개 XML 파일). 사이트 정보를 읽을 SiteMapDataSource 컨트롤을 포함하면 각 페이지의 목록이나 탐색 메뉴에서 이러한 링크를 렌더링할 수 있습니다. 그런 다음 TreeView 또는 Menu 컨트롤 등의 탐색 서버 컨트롤을 사용하여 사이트 정보를 표시합니다.
ASP.NET 사이트 탐색의 핵심 부분은 사이트 맵 공급자입니다. 이 클래스는 사이트 맵 데이터 소스에 사용되어 탐색 정보를 노출하는 클래스입니다. 예를 들어 기본 ASP.NET 사이트 맵 공급자는 Web.sitemap이라는 XML 파일에서 사이트 맵 데이터를 가져와 이 데이터를 SiteMapPath 웹 서버 컨트롤에 직접 전달합니다.
일관된 웹 사이트 모양 정의
ASP.NET의 여러 기능은 ASP.NET 테마 및 ASP.NET 마스터 페이지 등과 같이 웹 사이트에 대해 일관된 모양과 디자인을 만들고 유지 관리하는 데 도움을 줍니다. 이러한 기능은 사이트 개발 프로세스의 초기 단계에 사용하여 웹 사이트에 대해 일관된 모양을 제공할 수 있습니다.
ASP.NET 테마는 웹 사이트에서 페이지와 컨트롤의 모양을 정의합니다. ASP.NET 테마에는 ASP.NET 웹 서버 컨트롤의 속성 설정을 정의하는 스킨 파일이 포함될 수 있고, CSS 스타일시트 파일(.css 파일)과 그래픽도 포함될 수 있습니다. 테마를 적용하면 웹 사이트의 페이지를 일관성 있는 모양으로 만들 수 있습니다. 개발 프로세스의 초기 단계에 사이트에 대해 테마 또는 테마 집합을 만들면 이러한 테마를 만드는 새 페이지마다 적용할 수 있습니다. 테마에 대한 자세한 내용은 ASP.NET 테마 및 스킨 개요를 참조하십시오.
ASP.NET 마스터 페이지를 사용하면 웹 사이트에서 선택한 페이지(콘텐츠 페이지)에 적용할 수 있는 페이지 레이아웃(마스터 페이지)을 만들 수 있습니다. 또한 사이트에 대해 일관성 있는 모양을 만드는 작업이 훨씬 편리해집니다. 또한 마스터 페이지를 중첩할 수도 있습니다. 예를 들어 중첩된 마스터 페이지를 사용하여 전체 사이트에 대한 마스터 레이아웃을 하나 만들고 사이트의 개별 섹션에 대한 또 다른 마스터 레이아웃을 만들 수 있습니다. 또한 마스터 페이지와 테마를 함께 사용할 수도 있습니다. 마스터 페이지에 대한 자세한 내용은 ASP.NET 마스터 페이지 개요 및 중첩된 ASP.NET 마스터 페이지를 참조하십시오.
AJAX 기능 추가
ASP.NET AJAX 기능을 사용하면 응답성이 높고 친숙한 UI(사용자 인터페이스) 요소를 통해 풍부한 사용자 경험을 제공하는 웹 페이지를 빠르게 만들 수 있습니다. 또한 포스트백 없이 페이지를 새로 고칠 수도 있습니다. AJAX 기능은 크로스 브라우저 ECMAScript(JavaScript) 및 DHTML(동적 HTML) 기술을 통합하는 클라이언트 스크립트 라이브러리를 포함하며 ASP.NET 서버 기반 개발 플랫폼과 통합됩니다. AJAX 기능을 사용하여 사용자 환경 및 웹 응용 프로그램의 효율성을 개선할 수 있습니다. 자세한 내용은 ASP.NET AJAX 개요를 참조하십시오.
상태 관리 기능 사용
HTTP는 상태 비저장 프로토콜입니다. 각 요청은 입력될 때마다 처리되며 요청이 처리되면 모든 데이터가 삭제됩니다. 동일한 클라이언트에서도 요청 간에 상태가 유지 관리되지는 않습니다. 하지만 대부분의 웹 응용 프로그램에서는 요청 간에 상태를 유지 관리하는 것이 좋습니다.
ASP.NET에서는 고객 정보나 장바구니 내용과 같은 정보를 페이지 요청 간에 저장할 수 있는 고유한 상태 관리 기능을 제공합니다. 응용 프로그램, 세션, 페이지 및 사용자 관련 정보와 개발자 정의 정보를 저장하고 관리할 수 있습니다. ASP.NET에서는 쿠키, 뷰 상태, 세션 상태, 응용 프로그램 상태 및 프로필 속성을 사용하는 것을 포함하여 여러 가지 상태 관리 폼을 선택할 수 있습니다. 이 정보는 페이지에 있는 컨트롤과 무관할 수도 있습니다.
웹 사이트에 대한 계획을 세우는 경우 필요한 상태 관리 폼을 고려해야 합니다. 자세한 내용은 ASP.NET 상태 관리 개요를 참조하십시오.
데이터 캐싱을 통한 성능 향상
자주 액세스하거나 만드는 데 처리 시간이 많이 소요되는 데이터를 메모리에 저장하면 웹 사이트의 성능을 향상시킬 수 있습니다. 예를 들어 응용 프로그램에서 복잡한 논리를 사용하여 많은 양의 데이터를 처리한 다음 이 데이터를 보고서로 반환할 경우 사용자가 요청할 때마다 보고서를 다시 만들지 않도록 하는 것이 효율적입니다. 마찬가지로, 복잡한 데이터를 처리하지만 자주 업데이트되지 않는 페이지가 응용 프로그램에 포함된 경우에는 요청할 때마다 서버에서 페이지를 다시 만들면 비효율적입니다.
ASP.NET 캐시는 웹 사이트에 대한 범용 캐시 기능으로, 캐시를 위한 간단한 인터페이스와 만료 및 변경 종속성 서비스를 노출하는 고급 인터페이스를 제공합니다. 이러한 경우에 응용 프로그램 성능을 향상시킬 수 있도록 ASP.NET에서는 두 가지 캐싱 메커니즘을 제공합니다. 첫 번째 방법은 DataSet 또는 사용자 지정 보고서 비즈니스 개체와 같이 사용자가 생성하는 데이터를 캐싱할 수 있는 응용 프로그램 캐싱입니다. 두 번째 방법은 페이지 처리 결과를 저장하고, 사용자가 페이지를 다시 요청할 때 해당 페이지를 다시 처리하는 대신 이전에 저장한 결과를 다시 사용하는 페이지 출력 캐싱입니다. 웹 사이트 디자인에서 특정 페이지의 캐싱을 고려하는 경우 보다 효율적인 웹 사이트를 만들 수 있습니다.
보안 인프라
.NET Framework의 보안 기능 외에도 ASP.NET은 사용자 액세스 인증 및 권한 부여와 다른 보안 관련 작업 수행을 위한 보안 인프라를 제공합니다. 사용자 인증에는 IIS에서 제공하는 Windows 인증을 사용할 수 있습니다. 아니면 ASP.NET 폼 인증 및 ASP.NET 멤버 자격을 사용하여 인증을 관리할 수도 있습니다. 또한 Windows 그룹 또는 사용자 지정 역할 데이터베이스 및 ASP.NET 역할을 사용하여 웹 응용 프로그램의 리소스에 대한 액세스 권한 부여를 관리할 수 있습니다. 응용 프로그램의 필요에 따라 이러한 체계를 간단히 제거 또는 추가하거나 바꿀 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오.
ASP.NET은 항상 특정 Windows ID를 사용하여 실행되므로 NTFS 파일 시스템 ACL(액세스 제어 목록), 데이터베이스 권한 등의 Windows 기능을 사용하여 응용 프로그램에 보안을 설정할 수 있습니다. ASP.NET을 실행할 때 사용하는 ID에 대한 자세한 내용은 ASP.NET 프로세스 ID 구성 및 ASP.NET 가장을 참조하십시오.
기타 고려 사항
이 단원의 항목은 웹 사이트 코딩을 시작하기 전에 고려해야 하는 항목입니다. 이러한 항목의 정보를 계획 단계에 활용하면 시간을 절약하고 사이트가 오늘날의 웹 표준과 호환되도록 할 수 있습니다.
내게 필요한 옵션
내게 필요한 옵션 프로그래밍은 동작 범위가 제한되거나 색을 구분할 수 없는 경우처럼 특정한 장애가 있는 사용자를 돕기 위해 컴퓨터 운영 체제에서 사용할 수 있는 응용 프로그램을 디자인하고 개발하는 프로세스입니다. ASP.NET을 사용하면 장애가 있는 사용자가 액세스할 수 있는 웹 응용 프로그램을 만들 수 있습니다. 내게 필요한 옵션이 지원되는 웹 응용 프로그램을 사용하면 화면 판독기와 같은 보조 기술을 사용하여 웹 페이지 작업을 수행할 수 있습니다. 내게 필요한 옵션이 지원되는 웹 응용 프로그램에는 다음과 같은 이점이 있습니다.
응용 프로그램을 사용할 수 있는 대상자의 범위가 다양합니다.
장애가 있는 사용자뿐만 아니라 모든 사용자에게 유용한 디자인 원칙을 포함합니다.
모든 웹 응용 프로그램을 사용할 수 있어야 하는 여러 기관의 요구 사항을 충족할 수 있습니다.
내게 필요한 옵션 지침 및 이러한 지침을 충족시킬 수 있도록 ASP.NET에서 제공하는 방법을 이해하면 장애가 있는 사용자가 좀 더 쉽게 상호 작용할 수 있는 응용 프로그램을 만들 수 있습니다. 내게 필요한 옵션 지침에 대한 자세한 내용은 ASP.NET의 내게 필요한 옵션 지원을 참조하십시오.
대부분의 경우 ASP.NET 컨트롤은 내게 필요한 옵션 표준에 맞는 페이지를 만드는 태그를 렌더링하거나 내게 필요한 옵션이 지원되는 페이지를 만들기 위해 설정할 수 있는 속성을 노출합니다. 그러나 경우에 따라 ASP.NET 컨트롤은 내게 필요한 옵션 표준 중 일부 규칙에 맞지 않는 출력을 렌더링하기도 합니다. 자세한 내용은 ASP.NET 컨트롤 및 내게 필요한 옵션을 참조하십시오.
전역화 및 지역화
전역화는 여러 문화권에서 작동하는 응용 프로그램을 디자인 및 개발하는 작업입니다. 지역화란 특정 문화권이나 로캘에 맞도록 응용 프로그램을 사용자 지정하는 과정입니다. 다른 언어를 사용하는 사람이 읽을 웹 페이지를 만드는 경우 해당 언어를 사용하여 페이지를 볼 수 있는 방법을 제공해야 합니다. ASP.NET에서는 브라우저의 기본 언어 설정 또는 사용자가 명시적으로 선택한 언어를 기반으로 콘텐츠 및 다른 데이터를 가져올 수 있는 페이지를 만들 수 있도록 합니다. 이 콘텐츠 및 다른 데이터를 리소스라고 하며 이러한 데이터는 리소스 파일 또는 다른 소스에 저장할 수 있습니다. ASP.NET 웹 페이지에서는 리소스에서 속성 값을 가져오도록 컨트롤을 구성합니다. 런타임에 리소스 식은 해당하는 리소스 파일의 리소스로 대체됩니다. 자세한 내용은 ASP.NET 웹 페이지 리소스 개요를 참조하십시오.
개별 페이지 빌드 및 미리 컴파일
페이지나 웹 사이트를 빌드하는 작업은 사이트 개발의 일부이며 사이트의 모든 위치에서 발생할 수 있는 컴파일 타임 오류를 찾는 데 유용합니다. 빌드하면 페이지가 컴파일되지만 배포할 어셈블리가 생성되지는 않습니다.
웹 사이트의 모든 파일을 프로덕션 서버에 복사하면 해당 사이트를 컴파일하지 않고 배포할 수 있습니다. 사용자가 프로덕션 서버의 페이지를 요청하면 ASP.NET에서는 Visual Studio의 빌드 프로세스와 동일한 단계를 효과적으로 수행하여 사이트를 동적으로 컴파일합니다. ASP.NET에서는 요청할 때마다 페이지를 다시 컴파일할 필요가 없도록 결과 출력을 캐시합니다.
사이트를 게시하면 배포 가능한 어셈블리 및 기타 파일로 해당 사이트를 컴파일할 수 있습니다. 게시하면 빌드 작업과 동일한 컴파일 단계가 수행되지만 프로덕션 서버에 배포할 수 있는 출력이 폴더 및 하위 폴더에 저장됩니다.
자세한 내용은 Visual Web Developer에서 웹 사이트 배포를 참조하십시오.