Share via


Web Forms

ASP.NET Web Forms ASP.NET 웹 애플리케이션 프레임워크의 일부이며 Visual Studio에 포함됩니다. ASP.NET 웹 애플리케이션을 만드는 데 사용할 수 있는 네 가지 프로그래밍 모델 중 하나이며, 다른 하나는 MVC, ASP.NET 웹 페이지 및 ASP.NET 단일 페이지 애플리케이션을 ASP.NET.

Web Forms 사용자가 브라우저를 사용하여 요청하는 페이지입니다. 이러한 페이지는 HTML, 클라이언트 스크립트, 서버 컨트롤 및 서버 코드의 조합을 사용하여 작성할 수 있습니다. 사용자가 페이지를 요청하면 프레임워크에 의해 서버에서 컴파일 및 실행되고 프레임워크는 브라우저에서 렌더링할 수 있는 HTML 태그를 생성합니다. ASP.NET Web Forms 페이지는 모든 브라우저 또는 클라이언트 디바이스에서 사용자에게 정보를 제공합니다.

Visual Studio를 사용하여 ASP.NET Web Forms 만들 수 있습니다. Visual Studio IDE(통합 개발 환경)를 사용하면 서버 컨트롤을 끌어서 놓아 Web Forms 페이지를 배치할 수 있습니다. 그런 다음 페이지 또는 페이지 자체에 대한 컨트롤에 대한 속성, 메서드 및 이벤트를 쉽게 설정할 수 있습니다. 이러한 속성, 메서드 및 이벤트는 웹 페이지의 동작, 모양 및 느낌 등을 정의하는 데 사용됩니다. 페이지의 논리를 처리하는 서버 코드를 작성하려면 Visual Basic 또는 C#와 같은 .NET 언어를 사용할 수 있습니다.

참고

ASP.NET 및 Visual Studio 설명서는 여러 버전에 걸쳐 있습니다. 이전 버전의 기능을 강조 표시하는 항목은 최신 버전을 사용하는 현재 작업 및 시나리오에 유용할 수 있습니다.

ASP.NET Web Forms 다음과 같습니다.

  • 서버에서 실행되는 코드가 브라우저 또는 클라이언트 디바이스에 대한 웹 페이지 출력을 동적으로 생성하는 Microsoft ASP.NET 기술을 기반으로 합니다.
  • 모든 브라우저 또는 모바일 디바이스와 호환됩니다. ASP.NET 웹 페이지는 스타일, 레이아웃 등의 기능에 대해 올바른 브라우저 규격 HTML을 자동으로 렌더링합니다.
  • Microsoft Visual Basic 및 Microsoft Visual C#과 같은 .NET 공용 언어 런타임에서 지원하는 모든 언어와 호환됩니다.
  • Microsoft .NET Framework 기반으로 빌드되었습니다. 이렇게 하면 관리되는 환경, 형식 안전성 및 상속을 포함하여 프레임워크의 모든 이점이 제공됩니다.
  • 사용자가 만든 컨트롤과 타사 컨트롤을 추가할 수 있으므로 유연합니다.

ASP.NET Web Forms 제품:

  • HTML 및 기타 UI 코드를 애플리케이션 논리와 분리합니다.
  • 데이터 액세스를 포함하여 일반적인 작업에 대한 다양한 서버 컨트롤 모음입니다.
  • 강력한 도구 지원을 통해 강력한 데이터 바인딩.
  • 브라우저에서 실행되는 클라이언트 쪽 스크립팅을 지원합니다.
  • 라우팅, 보안, 성능, 국제화, 테스트, 디버깅, 오류 처리 및 상태 관리를 비롯한 다양한 기능을 지원합니다.

ASP.NET Web Forms 문제를 극복하는 데 도움이 됩니다.

웹 애플리케이션 프로그래밍은 기존 클라이언트 기반 애플리케이션을 프로그래밍할 때 일반적으로 발생하지 않는 문제를 제시합니다. 과제 중 에는 다음이 있습니다.

  • 풍부한 웹 사용자 인터페이스 구현 - 특히 페이지에 복잡한 레이아웃, 다량의 동적 콘텐츠 및 완전한 기능을 갖춘 사용자 대화형 개체가 있는 경우 기본 HTML 기능을 사용하여 사용자 인터페이스를 디자인하고 구현하는 것이 어렵고 지루할 수 있습니다.
  • 클라이언트와 서버 분리 - 웹 애플리케이션에서 클라이언트(브라우저)와 서버는 서로 다른 컴퓨터(그리고 다른 운영 체제에서도)에서 실행되는 다양한 프로그램입니다. 따라서 애플리케이션의 두 절반은 거의 정보를 공유하지 않습니다. 통신할 수 있지만 일반적으로 간단한 정보의 작은 청크만 교환합니다.
  • 상태 비정상 실행 - 웹 서버가 페이지에 대한 요청을 받으면 페이지를 찾아서 처리하고 브라우저로 보낸 다음 모든 페이지 정보를 삭제합니다. 사용자가 동일한 페이지를 다시 요청하는 경우 서버는 전체 시퀀스를 반복하여 페이지를 처음부터 다시 처리합니다. 즉, 서버에 처리된 페이지의 메모리가 없습니다. 페이지는 상태 비정상입니다. 따라서 애플리케이션이 페이지에 대한 정보를 유지 관리해야 하는 경우 상태 비정상 특성이 문제가 될 수 있습니다.
  • 알 수 없는 클라이언트 기능 - 대부분의 경우 웹 애플리케이션은 다양한 브라우저를 사용하여 많은 사용자가 액세스할 수 있습니다. 브라우저에는 다양한 기능이 있으므로 모든 기능에서 동일하게 실행되는 애플리케이션을 만들기가 어렵습니다.
  • 데이터 액세스의 복잡성 - 기존 웹 애플리케이션에서 데이터 원본에서 읽고 쓰는 작업은 복잡하고 리소스를 많이 사용할 수 있습니다.
  • 확장성 복잡성 - 대부분의 경우 기존 방법으로 설계된 웹 애플리케이션은 애플리케이션의 다양한 구성 요소 간의 호환성이 부족하여 확장성 목표를 달성하지 못합니다. 이는 종종 큰 증가 주기에서 애플리케이션에 대한 일반적인 실패 지점입니다.

웹 애플리케이션에 대한 이러한 문제를 해결하려면 상당한 시간과 노력이 필요할 수 있습니다. ASP.NET Web Forms 및 ASP.NET 프레임워크는 다음과 같은 방법으로 이러한 문제를 해결합니다.

  • 직관적이고 일관된 개체 모델 - ASP.NET 페이지 프레임워크는 양식을 별도의 클라이언트 및 서버 조각이 아닌 단위로 생각할 수 있는 개체 모델을 제공합니다. 이 모델에서는 페이지 요소에 대한 속성을 설정하고 이벤트에 응답하는 기능을 포함하여 기존 웹 애플리케이션보다 더 직관적인 방식으로 페이지를 프로그래밍할 수 있습니다. 또한 ASP.NET 서버 컨트롤은 HTML 페이지의 실제 콘텐츠와 브라우저와 서버 간의 직접 상호 작용에서 추상화됩니다. 일반적으로 클라이언트 애플리케이션에서 컨트롤을 사용하는 방식으로 서버 컨트롤을 사용할 수 있으며, 컨트롤과 해당 콘텐츠를 표시하고 처리하는 HTML을 만드는 방법을 생각할 필요가 없습니다.
  • 이벤트 기반 프로그래밍 모델 - ASP.NET Web Forms 클라이언트 또는 서버에서 발생하는 이벤트에 대한 이벤트 처리기를 작성하는 친숙한 모델을 웹 애플리케이션에 제공합니다. ASP.NET 페이지 프레임워크는 클라이언트에서 이벤트를 캡처하고, 서버에 전송하고, 적절한 메서드를 호출하는 기본 메커니즘이 모두 자동으로 표시되지 않는 방식으로 이 모델을 추상화합니다. 그 결과 이벤트 기반 개발을 지원하는 명확하고 쉽게 작성할 수 있는 코드 구조가 생성됩니다.
  • 직관적인 상태 관리 - ASP.NET 페이지 프레임워크는 페이지 및 해당 컨트롤의 상태를 유지하는 작업을 자동으로 처리하며 애플리케이션별 정보의 상태를 유지하는 명시적 방법을 제공합니다. 이는 서버 리소스를 많이 사용하지 않고 수행되며 브라우저에 쿠키를 보내거나 보내지 않고 구현할 수 있습니다.
  • 브라우저 독립적 애플리케이션 - ASP.NET 페이지 프레임워크를 사용하면 서버의 모든 애플리케이션 논리를 만들 수 있으므로 브라우저의 차이점에 대해 명시적으로 코딩할 필요가 없습니다. 그러나 클라이언트 쪽 코드를 작성하여 향상된 성능과 풍부한 클라이언트 환경을 제공하여 브라우저 관련 기능을 활용할 수 있습니다.
  • .NET Framework 공용 언어 런타임 지원 - ASP.NET 페이지 프레임워크는 .NET Framework 기반으로 빌드되므로 모든 ASP.NET 애플리케이션에서 전체 프레임워크를 사용할 수 있습니다. 애플리케이션은 런타임과 호환되는 모든 언어로 작성할 수 있습니다. 또한 데이터 액세스는 ADO.NET 포함하여 .NET Framework 제공하는 데이터 액세스 인프라를 사용하여 간소화됩니다.
  • 확장 가능한 서버 성능 .NET Framework - ASP.NET 페이지 프레임워크를 사용하면 단일 프로세서가 있는 한 컴퓨터에서 애플리케이션 논리를 복잡하게 변경하지 않고도 웹 애플리케이션을 다중 컴퓨터 웹 팜으로 완전히 확장할 수 있습니다.

ASP.NET Web Forms 기능

  • 서버 컨트롤 - ASP.NET 웹 서버 컨트롤은 페이지가 요청될 때 실행되고 브라우저에 태그를 렌더링하는 ASP.NET 웹 페이지의 개체입니다. 많은 웹 서버 컨트롤은 단추 및 텍스트 상자와 같은 익숙한 HTML 요소와 유사합니다. 다른 컨트롤에는 일정 컨트롤과 같은 복잡한 동작과 데이터 원본에 연결하고 데이터를 표시하는 데 사용할 수 있는 컨트롤이 포함됩니다.
  • 마스터 페이지 - ASP.NET master 페이지를 사용하면 애플리케이션의 페이지에 대한 일관된 레이아웃을 만들 수 있습니다. 단일 마스터 페이지는 애플리케이션의 모든 페이지(또는 페이지 그룹)에 대해 원하는 모양과 느낌 및 표준 동작을 정의합니다. 그런 다음 표시할 콘텐츠를 포함하는 개별 콘텐츠 페이지를 만들 수 있습니다. 사용자가 콘텐츠 페이지를 요청하면 master 페이지와 병합되어 master 페이지의 레이아웃과 콘텐츠 페이지의 콘텐츠를 결합하는 출력을 생성합니다.
  • 데이터 ASP.NET 작업하면 데이터를 저장, 검색 및 표시하기 위한 다양한 옵션이 제공됩니다. ASP.NET Web Forms 애플리케이션에서는 데이터 바인딩된 컨트롤을 사용하여 테이블, 텍스트 상자 및 드롭다운 목록과 같은 웹 페이지 UI 요소의 데이터 프레젠테이션 또는 입력을 자동화합니다.
  • 멤버 자격- ASP.NET ID는 애플리케이션에서 만든 데이터베이스에 사용자의 자격 증명을 저장합니다. 사용자가 로그인하면 애플리케이션은 데이터베이스를 읽어 자격 증명의 유효성을 검사합니다. 프로젝트의 계정 폴더에는 멤버 자격의 다양한 부분을 구현하는 파일(등록, 로그인, 암호 변경 및 액세스 권한 부여)이 포함되어 있습니다. 또한 ASP.NET Web Forms OAuth 및 OpenID를 지원합니다. 이러한 인증 향상을 통해 사용자는 Facebook, Twitter, Windows Live 및 Google과 같은 계정에서 기존 자격 증명을 사용하여 사이트에 로그인할 수 있습니다. 기본적으로 템플릿은 웹용 Visual Studio Express 2013과 함께 제공되는 개발 데이터베이스 서버인 SQL Server Express LocalDB의 instance 기본 데이터베이스 이름을 사용하여 멤버 자격 데이터베이스를 만듭니다.
  • 클라이언트 스크립트 및 클라이언트 프레임워크 - ASP.NET 웹 양식 페이지에 클라이언트 스크립트 기능을 포함하여 ASP.NET 서버 기반 기능을 향상시킬 수 있습니다. 클라이언트 스크립트를 사용하여 사용자에게 더 풍부하고 응답성이 뛰어난 사용자 인터페이스를 제공할 수 있습니다. 페이지가 브라우저에서 실행되는 동안 클라이언트 스크립트를 사용하여 웹 서버에 대한 비동기 호출을 수행할 수도 있습니다.
  • 라우팅 - URL 라우팅을 사용하면 실제 파일에 매핑되지 않는 요청 URL을 수락하도록 애플리케이션을 구성할 수 있습니다. 요청 URL은 단순히 사용자가 웹 사이트에서 페이지를 찾기 위해 브라우저에 입력하는 URL입니다. 라우팅을 사용하여 사용자에게 의미상 의미가 있고 SEO(검색 엔진 최적화)에 도움이 될 수 있는 URL을 정의합니다.
  • 상태 관리- ASP.NET Web Forms 페이지 단위 및 애플리케이션 전체에서 데이터를 보존하는 데 도움이 되는 몇 가지 옵션이 포함되어 있습니다.
  • 보안 - 더 안전한 애플리케이션 개발의 중요한 부분은 위협을 이해하는 것입니다. Microsoft는 스푸핑, 변조, 거부, 정보 공개, 서비스 거부, STRIDE(권한 상승)와 같은 위협을 분류하는 방법을 개발했습니다. ASP.NET Web Forms 확장성 지점 및 구성 옵션을 추가하여 ASP.NET Web Forms 다양한 보안 동작을 사용자 지정할 수 있습니다.
  • 성능 - 성능은 성공적인 웹 사이트 또는 프로젝트의 핵심 요소일 수 있습니다. ASP.NET Web Forms 페이지 및 서버 제어 처리, 상태 관리, 데이터 액세스, 애플리케이션 구성 및 로드 및 효율적인 코딩 방법과 관련된 성능을 수정할 수 있습니다.
  • 국제화 - ASP.NET Web Forms 브라우저에 대한 기본 설정 또는 사용자의 명시적 언어 선택에 따라 콘텐츠 및 기타 데이터를 가져올 수 있는 웹 페이지를 만들 수 있습니다. 콘텐츠 및 기타 데이터를 리소스라고 하며 이러한 데이터는 리소스 파일 또는 기타 원본에 저장할 수 있습니다. ASP.NET Web Forms 페이지에서 리소스에서 속성 값을 가져오기 위해 컨트롤을 구성합니다. 런타임에 리소스 식은 적절한 지역화된 리소스 파일의 리소스로 대체됩니다.
  • 디버깅 및 오류 처리 - ASP.NET Web Forms 애플리케이션에서 발생할 수 있는 문제를 진단하는 데 도움이 되는 기능이 포함되어 있습니다. 디버깅 및 오류 처리는 애플리케이션이 효과적으로 컴파일되고 실행되도록 ASP.NET Web Forms 내에서 잘 지원됩니다.
  • 배포 및 호스팅 - Visual Studio, ASP.NET, Azure 및 IIS는 Web Forms 애플리케이션을 배포하고 호스팅하는 프로세스에 도움이 되는 도구를 제공합니다.

Web Forms 애플리케이션을 만들 시기 결정

ASP.NET Web Forms 모델 또는 ASP.NET MVC 프레임워크와 같은 다른 모델을 사용하여 웹 애플리케이션을 구현할지 신중하게 고려해야 합니다. MVC 프레임워크가 Web Forms 모델을 대체하지는 않지만, 두 가지 프레임워크 모두 웹 응용 프로그램에 사용할 수 있습니다. 특정 웹 사이트에 Web Forms 모델 또는 MVC 프레임워크를 사용하기 전에 각 방법의 장점을 고려해야 합니다.

Web Forms 기반 웹 응용 프로그램의 이점

Web Forms 기반 프레임워크에서 제공하는 이점은 다음과 같습니다.

  • HTTP상의 상태를 보존하는 이벤트 모델을 지원하므로 LOB(Line-Of-Business) 웹 응용 프로그램 개발에 도움이 됩니다. Web Forms 기반 응용 프로그램에서는 수백 개의 서버 컨트롤에서 지원하는 수십 가지 이벤트를 제공합니다.
  • 또한 개별 페이지에 기능을 추가하는 페이지 컨트롤러 패턴을 사용합니다. 자세한 내용은 페이지 컨트롤러를 참조하세요.
  • 상태 정보를 더 쉽게 관리할 수 있는 보기 상태 또는 서버 기반 양식을 사용합니다.
  • 적은 수의 웹 개발자로 구성된 팀과 신속한 응용 프로그램 개발에 사용 가능한 다수의 구성 요소를 활용하려는 디자이너에게 매우 적합합니다.
  • 일반적으로 구성 요소( Page 클래스, 컨트롤 등)는 긴밀하게 통합되어 있으며 일반적으로 MVC 모델보다 코드가 적기 때문에 애플리케이션 개발에 덜 복잡합니다.

MVC 기반 웹 응용 프로그램의 이점

ASP.NET MVC 프레임워크에서 제공하는 이점은 다음과 같습니다.

  • 응용 프로그램을 모델, 뷰 및 컨트롤러로 분할해 복잡성을 관리하기 쉽습니다.
  • 뷰 상태 또는 서버 기반 양식을 사용하지 않습니다. 따라서 MVC 프레임워크는 응용 프로그램의 동작을 완벽히 제어하려는 개발자에게 적합합니다.
  • 단일 컨트롤러를 통해 웹 응용 프로그램 요청을 처리하는 프런트 컨트롤러 패턴을 사용합니다. 따라서 풍부한 라우팅 인프라를 지원하는 응용 프로그램을 디자인할 수 있습니다. 자세한 내용은 프런트 컨트롤러를 참조하세요.
  • TDD(테스트 구동 방식 개발)에 대해 향상된 지원을 제공합니다.
  • 애플리케이션 동작에 대한 높은 수준의 제어가 필요한 대규모 개발자 및 웹 디자이너 팀에서 지원하는 웹 애플리케이션에 적합합니다.