ASP.NET 웹 사이트 또는 ASP.NET 웹 응용 프로그램?


Visual Studio에서 새 ASP.NET 프로젝트를 시작하면 ASP.NET 웹 응용 프로그램을 만들거나 ASP.NET 웹 사이트를 만들 수 있습니다.

ASP.NET 웹 응용 프로그램과 ASP.NET 웹 사이트의 차이점은 무엇입니까? 내가 왜 다른 것을 택할 것인가?

사용하고있는 Visual Studio의 버전에 따라 대답이 달라졌습니까?



Answers


웹 사이트 :

웹 사이트 프로젝트는 즉시 컴파일됩니다. 결국 많은 DLL 파일이 생겨 결국 고통 스러울 수 있습니다. 또한 다른 디렉토리가 아직 코드로 컴파일되지 않을 수 있으므로 다른 디렉토리의 페이지 및 컨트롤을 참조해야하는 페이지 또는 컨트롤이 한 디렉토리에있을 때 문제가 발생합니다. 게시하는 데 또 다른 문제가있을 수 있습니다.

Visual Studio에 동일한 이름을 계속해서 다시 사용하라는 메시지가 표시되지 않으면 항상 페이지에서 생성 된 DLL 파일의 새 이름이 생깁니다. 이로 인해 동일한 클래스 이름을 포함하는 여러 개의 DLL 파일이 여러 번 복사 될 수 있으며 이로 인해 많은 오류가 발생할 수 있습니다. 웹 사이트 프로젝트는 Visual Studio 2005에서 소개되었지만 극도로 대중적이지는 않습니다.

웹 응용 프로그램 :

웹 응용 프로그램 프로젝트는 추가 기능으로 만들어졌으며 현재 Visual Studio 2005 용 SP 1의 일부로 제공됩니다. 주요 차이점은 웹 응용 프로그램 프로젝트가 Visual Studio 2003과 함께 제공되는 웹 프로젝트와 유사하게 작동하도록 설계되었습니다. 빌드 할 때 응용 프로그램을 단일 DLL 파일로 컴파일하십시오. 프로젝트를 업데이트하려면 다시 컴파일해야하며 변경 사항이 게시되도록 DLL 파일이 게시되어야합니다.

웹 애플리케이션 프로젝트의 또 다른 장점은 프로젝트보기에서 파일을 제외하는 것이 훨씬 쉽다는 점입니다. 웹 사이트 프로젝트에서 제외 할 각 파일의 이름이 파일 이름에 exclude 키워드로 바뀝니다. 웹 응용 프로그램 프로젝트에서 프로젝트는 프로젝트보기에서 포함 / 제외 할 파일을 이름을 바꾸지 않고 추적하여 작업을 훨씬 더 정돈합니다.

참고

기사 ASP.NET 2.0 - 웹 사이트 대 웹 응용 프로그램 프로젝트 는 왜 다른 것을 사용하지 않는지에 대한 이유를 제시합니다. 다음은 그것의 발췌 부분입니다 :

  • 대규모 Visual Studio .NET 2003 응용 프로그램을 VS 2005로 마이그레이션해야합니까? 웹 응용 프로그램 프로젝트를 사용하십시오.
  • 프로젝트 파일을 만들지 않고 웹 프로젝트로 모든 디렉토리를 열고 편집하고 싶습니까? 웹 사이트 프로젝트를 사용하십시오.
  • 컴파일하는 동안 사전 빌드 단계와 빌드 후 단계를 추가해야합니까? 웹 응용 프로그램 프로젝트를 사용하십시오.
  • 여러 웹 프로젝트를 사용하여 웹 응용 프로그램을 빌드해야합니까? 웹 응용 프로그램 프로젝트를 사용하십시오.
  • 각 페이지마다 하나의 어셈블리를 생성 하시겠습니까? 웹 사이트 프로젝트를 사용하십시오.
  • 동적 컴파일을 선호하고 각 페이지 뷰에 전체 사이트를 만들지 않고 페이지에서 작업 할 수 있습니까? 웹 사이트 프로젝트를 사용하십시오.
  • 코드 숨김 모델에 단일 페이지 코드 모델을 선호하십니까? 웹 사이트 프로젝트를 사용하십시오.

웹 응용 프로그램 프로젝트와 웹 사이트 프로젝트 (MSDN)는 웹 사이트와 웹 응용 프로그램 프로젝트의 차이점을 설명합니다. 또한 Visual Studio에서 수행 할 구성에 대해 설명합니다.




웹 사이트 는 IIS와 같은 ASP.NET 웹 서버에 배포하는 사이트 입니다. 파일과 폴더의 무리. Visual Studio (프로젝트 파일이 없음)와 연결되는 웹 사이트에는 아무 것도 없습니다. 웹 페이지 (예 : .aspx, .ascx, .master)의 코드 생성 및 컴파일은 런타임에 동적으로 수행되며 이러한 파일에 대한 변경 사항은 프레임 워크에서 감지되고 자동으로 다시 컴파일됩니다. 페이지간에 공유 할 코드를 특수 App_Code 폴더에 넣거나 미리 컴파일하여 어셈블리를 Bin 폴더에 넣을 수 있습니다.

웹 응용 프로그램 은 특수한 Visual Studio 프로젝트입니다. 웹 사이트의 가장 큰 차이점은 프로젝트를 빌드 할 때 모든 코드 파일이 하나의 어셈블리로 컴파일된다는 것입니다.이 어셈블리는 bin 디렉토리에 있습니다. 코드 파일을 웹 서버에 배포하지 마십시오. 공유 코드 파일을위한 특별한 폴더가있는 대신 클래스 라이브러리에서하는 것처럼 어디서나 넣을 수 있습니다. 웹 응용 프로그램에는 프로젝트 및 코드 파일과 같이 배포 할 파일이 포함되어 있지 않으므로 Visual Studio에서 지정된 위치에 웹 사이트를 출력하는 게시 명령이 있습니다.

App_Code 대 Bin

공유 코드 파일을 배포하는 것은 일반적으로 좋지 않지만 웹 응용 프로그램을 선택해야한다는 의미는 아닙니다. 웹 사이트의 모든 코드를 보유하고있는 클래스 라이브러리 프로젝트를 참조하는 웹 사이트를 가질 수 있습니다. 웹 응용 프로그램은이를 수행하는 편리한 방법입니다.

코드 비하인드

이 항목은 .aspx 및 .ascx 파일에만 적용됩니다. 이 항목은 코드 비헤이비어 파일을 사용하지 않는 ASP.NET MVC 및 ASP.NET 웹 페이지와 같은 새로운 응용 프로그램 프레임 워크와 관련이 있습니다.

.aspx 페이지 및 .ascx 컨트롤의 코드 숨김 파일을 포함하여 모든 코드 파일을 단일 어셈블리로 컴파일하면 웹 응용 프로그램에서 작은 변경 사항마다 다시 빌드해야하며 실제 변경 작업을 수행 할 수 없습니다. 웹 사이트 변경 사항이 런타임에 감지되고 페이지 / 컨트롤이 자동으로 다시 컴파일되는 동안 변경 내용을 보려면 다시 빌드해야하므로 개발 중에는 정말 고통이 될 수 있습니다.

런타임에 코드 숨김 어셈블리를 관리하면 페이지 / 컨트롤 고유 이름을 걱정할 필요가 없으므로 코드 네임 어셈블리를 관리 할 필요가 없기 때문에 코드 네임 어셈블리를 다른 네임 스페이스로 구성 할 수 있습니다.

코드 파일 배포는 항상 좋은 생각입니다 (특히 공유 코드 파일의 경우는 아님). 코드 비헤이비어 파일에는 UI 특정 작업, 와이어 업 이벤트 핸들러 등을 수행하는 코드 만 포함해야합니다. 응용 프로그램이 있어야합니다. 중요한 코드는 항상 Bin 폴더에 저장됩니다. 그렇다면 코드 숨김 파일 배포는 유해한 것으로 간주되어서는 안됩니다.

웹 응용 프로그램의 또 다른 한계는 프로젝트의 언어 만 사용할 수 있다는 것입니다. 웹 사이트에서 C #, VB 등의 일부 페이지를 가질 수 있습니다. 특별한 Visual Studio 지원은 필요 없습니다. 이것이 빌드 제공 업체의 확장 성의 아름다움입니다.

또한 웹 응용 프로그램에서는 컴파일러가 런타임에 컴파일되는 코드 비하인드 클래스 (MvcBuildViews 옵션을 사용하여 수정할 수있는 MVC에서는)가 아닌 코드 비헤이비어 클래스 만 컴파일하므로 페이지 / 컨트롤에서 오류를 감지하지 않습니다.

비주얼 스튜디오

웹 응용 프로그램은 Visual Studio 프로젝트이므로 웹 사이트에서 사용할 수없는 몇 가지 기능을 사용할 수 있습니다. 예를 들어 빌드 이벤트를 사용하여 Javascript 파일 축소 및 / 또는 결합과 같은 다양한 작업을 수행 할 수 있습니다.

Visual Studio 2010에 도입 된 또 다른 멋진 기능은 Web.config 변환 입니다. 웹 사이트에서도 사용할 수 없습니다. 이제 VS 2013의 웹 사이트에서 작동합니다.

웹 응용 프로그램을 구축하는 것이 특히 대규모 사이트의 경우 웹 사이트를 만드는 것보다 빠릅니다. 이는 주로 웹 응용 프로그램이 마크 업 코드를 컴파일하지 않기 때문입니다. MVC에서 MvcBuildViews를 true로 설정하면 마크 업 코드가 컴파일되고 오류 감지가 발생하므로 매우 유용합니다. 단점은 솔루션을 구축 할 때마다 사이트 전체를 구성하기 때문에 사이트를 편집하지 않는 경우 느리고 비효율적 일 수 있습니다. 나는 MvcBuildViews를 켜고 끄는 (프로젝트 언로드가 필요함) 것을 알았다. 반면에 웹 사이트에서는 솔루션의 일부로 사이트를 구축할지 여부를 선택할 수 있습니다. 그렇지 않으면 솔루션을 구축하는 것이 매우 빠르며, 변경 한 경우 항상 웹 사이트 노드를 클릭하고 빌드를 선택할 수 있습니다.

MVC 웹 응용 프로그램 프로젝트에는 'Add View', 'Go To View', 'Add Controller'등과 같은 일반적인 작업을위한 추가 명령과 대화 상자가 있습니다. MVC 웹 사이트에서는 사용할 수 없습니다.

IIS Express를 개발 서버로 사용하는 경우 웹 사이트에서 가상 디렉터리를 추가 할 수 있습니다. 이 옵션은 웹 응용 프로그램에서 사용할 수 없습니다.

NuGet 패키지 복원은 웹 사이트에서 작동하지 않으므로 packages.config에 나열된 패키지를 수동으로 설치해야합니다. 패키지 복원은 이제 NuGet 2.7을 시작 하는 웹 사이트에서 작동합니다




웹 사이트 = 웹 사이트 가 그래픽 디자이너에 의해 만들어지고 프로그래머가 하나 또는 두 페이지 만 편집 할 때 사용

웹 응용 프로그램 = 프로그래머가 응용 프로그램을 만들 때 그래픽 디자이너가 하나 또는 두 개의 페이지 / 이미지 만 편집 할 때 사용합니다.

프로젝트 파일을 업데이트 할 필요가 없으므로 웹 사이트는 개발자 스튜디오를 가질 필요없이 모든 HTML 도구를 사용하여 작업 할 수 있습니다. 웹 응용 프로그램은 팀이 주로 개발자 스튜디오를 사용하고 코드 콘텐츠가 많은 경우에 가장 적합합니다.

컴파일 타임에 웹 응용 프로그램에서 런타임까지 웹 사이트에없는 일부 코딩 오류가 발견되었습니다.

경고 : 나는이 해답을 몇 년 전에 썼고 Asp.net을 사용하지 않았다. 나는 이제 상황이 나아질 것을 기대한다.




동적으로 컴파일 된 프로젝트를 특별히 필요로 하지 않는 한 웹 사이트 프로젝트를 사용하지 마십시오 .

왜? 웹 사이트 프로젝트는 프로젝트를 변경하거나 이해하려고 할 때 벽을 부추 기 때문입니다. Visual Studio에서 정적 유형 찾기 기능 (예 : 사용법, 리팩토링 도구)은 합리적인 규모의 프로젝트에서 모두 오래 걸릴 것입니다. 자세한 내용 은 Visual Studio에서 스택 오버플로 질문 느리게 "모든 참조 찾기"를 참조하십시오 .

Visual Studio 2005의 웹 응용 프로그램을 통증 유발, 온전한 배수, 생산성 카툰 웹 사이트 프로젝트 유형으로 분류 한 이유를 알 수 없습니다.







이것은 약간 분명한 것처럼 들릴지 모르겠지만 Visual Studio 2005는 원래 웹 사이트에서만 제공 되었기 때문에 오해의 여지가 있습니다. 프로젝트가 상당히 제한적이고 논리적 또는 물리적 분리가 많이없는 웹 사이트를 다루는 경우 웹 사이트는 괜찮습니다. 그러나 많은 사용자가 데이터를 추가하고 업데이트하는 모듈이 다른 웹 응용 프로그램이라면 웹 응용 프로그램을 사용하는 것이 좋습니다.

웹 사이트 모델의 가장 큰 프로는 app_code 섹션의 app_code 항목이 동적으로 컴파일된다는 것입니다. 전체 재배치없이 C # 파일을 업데이트 할 수 있습니다. 그러나 이것은 커다란 희생을 가져옵니다. 제어하기 어려운 덮개 아래에서 많은 일이 발생합니다. 네임 스페이스는 제어하기 어렵고 모든 DLL이 동적으로 컴파일되기 때문에 특정 DLL 사용이 app_code 아래의 모든 항목에 대해 기본적으로 창 밖으로 나옵니다.

웹 응용 프로그램 모델에는 동적 컴파일이 없지만 언급 한 내용을 제어 할 수 있습니다.

n 계층 개발을 수행하는 경우 웹 응용 프로그램 모델을 사용하는 것이 좋습니다. 제한된 웹 사이트 또는 빠르고 더러운 구현을 수행하는 경우 웹 사이트 모델에 이점이있을 수 있습니다.

보다 자세한 분석은 다음에서 찾을 수 있습니다.




MCTS 자기 페이스 훈련 킷 시험 70-515 책에서 :

웹 응용 프로그램 (프로젝트)

  1. MVC 응용 프로그램을 만들 수 있습니다.
  2. Visual Studio는 폴더 구조에 의존하지 않고 프로젝트 파일 (.csproj 또는 .vbproj)에 파일 목록을 저장합니다.
  3. Visual Basic과 C #을 함께 사용할 수 없습니다.
  4. 디버깅 세션을 중지하지 않고는 코드를 편집 할 수 없습니다.
  5. 여러 웹 프로젝트간에 종속성을 설정할 수 있습니다.
  6. 배포 전에 응용 프로그램을 컴파일해야합니다. 그러면 다른 페이지가 컴파일되지 않으면 페이지를 테스트 할 수 없습니다.
  7. 소스 코드를 서버에 저장할 필요가 없습니다.
  8. 어셈블리 이름과 버전을 제어 할 수 있습니다.
  9. 배포 후에는 다시 컴파일하지 않고 개별 파일을 편집 할 수 없습니다.



그것은 당신이 개발하고있는 것에 달려 있습니다.

콘텐츠 중심 웹 사이트는 콘텐츠가 자주 바뀌고 웹 사이트가 더 적합합니다.

응용 프로그램은 데이터를 데이터베이스에 저장하고 페이지 및 코드를 거의 변경하지 않는 경향이 있습니다. 이 경우 어셈블리 배포가 훨씬 제어되고 단위 테스트를 더 잘 지원할 수있는 웹 응용 프로그램을 만드는 것이 좋습니다.




Compilation 먼저 컴파일의 차이가 있습니다. 웹 사이트는 서버에서 사전 컴파일되지 않으며 파일로 컴파일됩니다. 웹 사이트의 내용을 변경하고자 할 때 서버에서 특정 파일을 다운로드하고 변경 한 다음이 파일을 서버에 업로드하면 모든 것이 잘 작동 할 수 있기 때문에 이점이 있습니다. 웹 응용 프로그램에서는 모든 것이 사전 컴파일되어 하나의 dll로 끝나기 때문에이 작업을 수행 할 수 없습니다. 프로젝트의 한 파일에서 무언가를 변경하면 다시 모든 것을 다시 컴파일해야합니다. 따라서 서버 웹 사이트에서 일부 파일을 변경할 가능성이있는 경우 더 나은 해결책이 될 것입니다. 또한 많은 개발자가 하나의 웹 사이트에서 작업 할 수 있습니다. 다른면에서 서버에서 코드를 사용할 수 없도록하려면 웹 응용 프로그램을 선택해야합니다. 이 옵션은 웹 사이트를 게시 한 후에 하나의 DLL 파일이 만들어지기 때문에 Unit Testing에서 더 좋습니다.

Project structure 또한 Project structure 에는 차이가 있습니다. 웹 응용 프로그램에는 일반 응용 프로그램과 같은 프로젝트 파일이 있습니다. 웹 사이트에는 전통적인 프로젝트 파일이 없으며 솔루션 파일 만 있으면됩니다. 모든 참조 및 설정은 web.config 파일에 저장됩니다. @Page directive 이 페이지와 연관된 클래스가 들어있는 파일에 대해 @Page 지시문에 다른 속성이 있습니다. 웹 응용 프로그램에서는 표준 "CodeBehind"이며, "CodeFile"을 사용하는 웹 사이트에 있습니다. 아래 예에서이 내용을 볼 수 있습니다.

Web Application:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

웹 사이트 :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

네임 스페이스 - 위의 예에서 네임 스페이스가 어떻게 생성되는지 또 다른 차이점을 볼 수 있습니다. 웹 응용 프로그램 네임 스페이스에서 단순히 프로젝트의 이름입니다. 웹 사이트에는 동적으로 컴파일 된 페이지에 대한 기본 네임 스페이스 ASP가 있습니다.

편집 및 계속 - 웹 응용 프로그램에서 편집 및 계속 옵션을 사용할 수 있습니다 (도구 메뉴로 이동하려면 옵션을 클릭 한 다음 옵션을 클릭하고 디버깅에서 편집 및 계속 찾기). 이 기능은 웹 사이트에서 작동하지 않습니다 .ASP.NET MVCIf를 사용하여 웹 응용 프로그램을 개발하려고합니다.

ASP.NET MVC (Model View Controller) 가장 좋은 기본 옵션은 웹 응용 프로그램입니다. 웹 사이트에서 MVC를 사용할 수도 있지만 권장하지는 않습니다.

요약 - ASP.NET 웹 응용 프로그램과 웹 사이트 간의 가장 중요한 차이점은 컴파일입니다. 따라서 소수의 사람들이 그것을 수정할 수있는 더 큰 프로젝트를 수행한다면 웹 사이트를 사용하는 것이 낫습니다. 그러나 작은 프로젝트를 수행하는 경우 웹 응용 프로그램도 사용할 수 있습니다.




주요 차이점 중 하나는 웹 사이트가 동적으로 컴파일되고 즉석 어셈블리를 작성한다는 것입니다. 웹 응용 프로그램은 하나의 큰 어셈블리로 컴파일됩니다.

이 둘의 차이점은 Visual Studio 2008에서 제거되었습니다.




예 웹 애플리케이션은 웹 사이트보다 훨씬 뛰어납니다. 웹 애플리케이션이 우리에게 자유를주기 때문입니다.

  1. 여러 프로젝트를 하나의 우산 아래두고 프로젝트 간의 종속성을 확립하는 것. 예를 들어 우리는 웹 애플리케이션 내에서 다음과 같은 일을 할 수 있습니다.

    • 웹 포털
    • 알림 컨트롤러 (전자 메일 보내기 용)
    • 비즈니스 계층
    • 데이터 액세스 레이어
    • 예외 관리자
    • 서버 유틸리티
    • WCF 서비스 (모든 플랫폼에서 공통)
    • 목록 항목
  2. ASP.NET 페이지와 연결된 클래스 파일에있는 코드에서 단위 테스트를 실행하려면

  3. 독립 실행 형 클래스의 페이지 및 사용자 컨트롤과 관련된 클래스를 참조하려면
  4. 전체 사이트에 대해 단일 어셈블리를 만들려면
  5. 사이트에 대해 생성 된 어셈블리 이름 및 버전 번호 제어
  6. 프로덕션 서버에 소스 코드를 넣지 않으려면. IIS 서버에 소스 코드를 배포하는 것을 피할 수 있습니다. 공유 호스팅 환경과 같은 일부 시나리오에서는 IIS 서버의 소스 코드에 대한 무단 액세스가 우려 될 수 있습니다 (웹 사이트 프로젝트의 경우이 위험을 피할 수 있습니다. 개발 컴퓨터에서 미리 컴파일하고 생성 된 어셈블리를 소스 코드 대신 배포하는 경우에도 쉽게 업데이트 할 수 있습니다.
  7. 웹 사이트 성능 문제 (웹 사이트에 대한 첫 번째 요청은 사이트 컴파일이 지연되어 지연 될 수 있습니다.) 그리고 웹 사이트가 메모리가 부족한 IIS 서버에서 실행되고 단일 어셈블리는 여러 어셈블리에 필요한 것보다 많은 메모리를 사용할 수 있습니다.)



응용 프로그램은 일반적으로 웹 사이트에서 app_code 디렉토리를 사용하는 배포 전에 컴파일됩니다. 앱 코드 폴더가 변경되면 서버는 코드를 다시 컴파일합니다. 즉, 즉시 웹 사이트 코드를 추가 / 변경할 수 있습니다.

앱의 장점은 다시 컴파일 할 필요가 없으므로 초기 시작 시간이 빨라진다는 것입니다.




ASP.NET 웹 사이트에서 비디오 웹 응용 프로그램 프로젝트 및 웹 배포 프로젝트 를 시청하는 것이 좋습니다. 차이점에 대한 자세한 내용은 나에게 매우 유용합니다.

그런데 제목에 혼란스러워하지 마라. 비디오의 상당 부분은 웹 사이트 프로젝트와 웹 응용 프로그램 프로젝트의 차이점과 Microsoft가 Visual Studio 2005에서 웹 응용 프로그램 프로젝트를 다시 소개 한 이유를 설명합니다. 원래 웹 사이트 프로젝트 만 제공된 다음 웹 응용 프로그램 프로젝트가 SP1에 추가되었습니다. 큰 차이를 알기를 원하는 사람에게 좋습니다.




"웹 사이트"는 특수 App_Code 디렉토리에 코드가 있으며 런타임에 여러 DLL (어셈블리)로 컴파일됩니다. "웹 응용 프로그램"은 하나의 단일 DLL로 사전 컴파일됩니다.




웹 사이트 및 프로젝트 >> 웹 사이트는 Visual Studio를 사용하여 ASP.NET 응용 프로그램을 만드는 두 가지 방법입니다. 하나는 프로젝트가없고 다른 하나는 프로젝트 환경입니다. 차이점은 다음과 같습니다.

  1. 솔루션 파일은 프로젝트 환경의 루트 디렉토리와 동일한 디렉토리에 저장됩니다.
  2. 프로젝트 환경에서 배포하기 전에 솔루션 및 프로젝트 파일을 제거해야합니다.
  3. 완전한 루트 디렉토리는 프로젝트가없는 환경에 배포됩니다.

두 가지 접근법을 사용하는 데는 별다른 차이가 없습니다. 그러나 더 오랜 시간이 걸리는 웹 사이트를 만드는 경우 프로젝트 환경을 선택하십시오.




웹 응용 프로그램 프로젝트 모델

  • Visual Studio .NET 웹 프로젝트와 동일한 웹 프로젝트 의미를 제공합니다. 프로젝트 파일 (프로젝트 파일을 기반으로 한 구조)이 있습니다. 빌드 모델 - 프로젝트의 모든 코드가 단일 어셈블리로 컴파일됩니다. IIS와 기본 제공 ASP.NET 개발 서버를 모두 지원합니다. Visual Studio 2005 (리팩토링, 제네릭 등) 및 ASP.NET (마스터 페이지, 멤버십 및 로그인, 사이트 탐색, 테마 등)의 모든 기능을 지원합니다. FrontPage Server Extensions (FPSE) 사용은 더 이상 필요하지 않습니다.

웹 사이트 프로젝트 모델

  • 프로젝트 파일 없음 (파일 시스템 기반).
  • 새 컴파일 모델.
  • 동적 컴파일 및 각 페이지 뷰에서 전체 사이트를 구축하지 않고 페이지에서 작업.
  • IIS와 기본 제공 ASP.NET 개발 서버를 모두 지원합니다.
  • 각 페이지마다 고유 한 어셈블리가 있습니다.
  • Defferent 코드 모델.



그것은 항상 고객의 요구 사항에 달려 있습니다. ASP.NET은 사용자가 보안 및 응용 프로그램 유지 관리에 필요한 유연한 기능을 포함합니다.

웹 응용 프로그램 을 ASP.NET 프레임 워크 내에서 실행되는 이진 파일로 생각할 수 있습니다. 또한 웹 사이트 를 정적 웹 페이지로 검토하여 소스 코드를 쉽게 배포 할 수 있습니다.

그러나이 두 가지 ASP.NET 기술의 장단점은 좋은 것입니다.




웹 응용 프로그램 프로젝트에서 Visual Studio는 페이지 및 사용자 컨트롤을위한 추가 .designer 파일이 필요합니다. 웹 사이트 프로젝트에는이 오버 헤드가 필요하지 않습니다. 마크 업 자체가 디자인으로 해석됩니다.




WebSite : app_code 폴더를 자동으로 생성하고 서버에 게시 한 후 모든 파일을 컴파일 할 필요없이 특정 파일이나 페이지에서 일부 변경을 수행 한 경우

웹 응용 프로그램 웹 사이트가 생성하지 않는 솔루션 파일을 자동으로 생성하고 변경 사항을 반영하기 위해 전체 프로젝트를 컴파일해야하는 것보다 한 파일에서 변경하는 경우 솔루션 파일을 생성합니다.




아마도 웹 응용 프로그램은 더 많은 메모리를 필요로합니다. 아마도 당신은 하나의 어셈블리로 컴파일 할 수 밖에 없기 때문입니다. 난 그냥 웹 응용 프로그램에 큰 레거시 사이트를 변환하고 메모리 부족과 함께 문제가 컴파일 시간에 모두

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

오류 및 런타임시 다음 오류가 발생합니다.

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

메모리가 제한된 레거시 하드웨어에서 더 큰 사이트를 변환하는 것이 좋습니다. 웹 사이트 모델로 돌아갈 수있는 옵션을 제공하는 것입니다. 초기 성공 후에도 문제가 나중에 일어날 수 있습니다.




웹 응용 프로그램에서 프로젝트 기능의 레이어를 만들 수 있으며 여러 프로젝트로 나눠서 상호 종속성을 만들 수 있지만 웹 사이트에서는이 작업을 수행 할 수 없습니다.




확실히 웹 응용 프로그램, 단일 DLL 파일 및 유지하기 쉽습니다. 그러나 웹 사이트는보다 유연합니다. 당신은 이동 중에 aspx 파일을 편집 할 수 있습니다.




여기 웹 지원 응용 프로그램은 웹 사이트의 한 예입니다. 웹 사이트 및 웹 응용 프로그램은 둘 다 요구 사항에 따라 동적 / 정적이 될 수 있습니다. 여기 웹 사이트 및 웹 응용 프로그램의 작동을 이해하는 예제가 있습니다.




웹 사이트 - 솔루션 파일이 생성되지 않습니다. 우리가 웹 사이트를 만들려면 비주얼 스튜디오가 필요 없습니다.

웹 응용 프로그램 - 솔루션 파일이 생성됩니다. 우리가 웹 애플리케이션을 만들고 싶다면 Visual Studio가 필요합니다. bin 폴더에 하나의 .dll 파일을 만듭니다.