Visual Studio의 'Web Site'와 'Project'의 차이점
중복 가능성:
ASP.NET: 웹 사이트 또는 웹 응용 프로그램?
Visual Studio 2008을 시작하고 'New Web Site' -> 'ASP.NET Web Site' 대신 'New Project' -> 'ASP.NET Web Application'을 선택하면 분명히 차이가 있다는 것을 알게 되었습니다.예를 들어 '프로젝트'를 선택하면 .dll로 컴파일할 수 있으며 각 페이지는 파일 뒤에 *.aspx.designer.cs 코드를 받습니다.
왜 우리는 두 가지 다른 프로젝트 유형을 가지고 있을까요?
어느 것이 더 좋습니까?
내가 왜 다른 것보다 하나를 선택하겠습니까?
*.aspx.designer.cs 파일은 어떻게 됩니까?
그들은 다른 목적을 가지고 있습니다.
웹 사이트는 시간이 지남에 따라 내용이 변경될 가능성이 있는 사이트이며, 페이지 자체가 변경될 것입니다.실제 프로젝트 파일은 없으며 사이트는 단순히 파일 집합으로 배포됩니다.
응용프로그램은 콘텐츠가 응용프로그램일 뿐인 사이트이며 동적 부분은 주로 데이터베이스와 같은 영구 저장소에 있습니다.내용을 검사하는 수단만큼이나 데이터 입력을 위한 양식 집합을 나타낼 가능성이 높기 때문에 더 복잡한 논리를 가질 것입니다.컴파일된 dll로 배포된 코드와 구성을 보다 엄격하게 제어하기 위한 프로젝트 파일이 있습니다.
'웹 사이트' 모델은 ASP.NET 2.0과 함께 도입되었으며, '웹 응용 프로그램' 모델은 원래 .net 프레임워크의 프로젝트 유형이었습니다.둘 다 용도가 다릅니다(아래 참조).
상황에 따라 다릅니다.소프트웨어 제품을 판매하는 경우 '웹 응용 프로그램' 프로젝트를 사용하는 것이 좋습니다. 이 프로젝트는 코드를 깔끔하게 컴파일할 수 있기 때문입니다.
위의 개인 선호도, 유지관리 특성을 참조하십시오.'웹 사이트'를 사용하면 웹 사이트가 실행되는 동안 메모장의 코드 뒤에 있는 파일(일반적으로 *.cs 또는 *.vb)을 임의로 변경할 수 있습니다.
designer.cs 파일은 자동 생성된 코드를 저장하는 데 사용됩니다."이 코드는 도구에 의해 생성되었습니다."
방금 답변이 왔기 때문에 2개의 정의를 중복하지 않겠습니다.
그럼 왜 하나를 다른 하나보다 사용하는 거지?
웹 사이트를 사용하면 즉시 적용되는 인라인 변경을 수행할 수 있는 PHP 또는 기존 ASP 사이트처럼 처리할 수 있습니다.
장점
- 웹 서버에서 사이트를 바로 수정할 수 있습니다.
- 폴더를 복사하는 것만큼 간단한 배포
단점
- 라이브 사이트에서 변경 사항을 제대로 적용하지 않으면 모든 파일을 동기화하는 것을 잊어버리는 변경 관리 문제가 발생할 수 있습니다.
- 확인할 수 있는 유일한 방법은 모든 페이지를 수동으로 실행하는 것이기 때문에 런타임 구문 오류를 최종 사용자에게 표시할 수 있습니다.
웹 응용 프로그램을 사용하면 데스크톱 응용 프로그램처럼 처리할 수 있습니다. 컴퓨터에 컴파일된 배포 가능한 프로그램이 있습니다.
장점
명확하고 체계적인 변경 관리.서로 다른 두 버전의 코드를 실수로 혼합할 수 없습니다.이것은 두 명의 사용자(하나는 코드를 작성하고 다른 하나는 서버에 파일을 저장하는 책임자)가 관련된 경우에 중요합니다.
컴퓨터에서 컴파일하기 때문에 해당 시점에서 모든 구문이 확인됩니다.*
단점
배포는 개발 컴퓨터에서 폴더를 복사하는 것보다 조금 더 중요합니다.그러나 "게시" 명령어를 사용하면 웹 서버에 복사할 파일을 컴파일하고 조합하는 프로세스가 크게 간소화됩니다.
모든 변경 사항은 컴퓨터에서 수행하고 컴파일한 후 완전히 새로운 버전을 웹 서버로 전송해야 합니다.*
*aspx/html 파일은 빌드 옵션에서 이 기능을 설정한 경우에만 구문을 확인합니다.프로젝트에 컴파일되지 않은 경우 서버에서 이러한 파일을 편집할 수도 있습니다.
간단한 답변은 다음과 같습니다.
- 새 웹 사이트 - 페이지가 요청될 때 서버에서 컴파일되는 페이지 뒤에 코드를 작성합니다.
- 새 웹 프로젝트 - 사전 컴파일된 페이지를 하나 이상의 어셈블리(전체 사이트 짝수)로 만들고 서버에 배포합니다.
시나리오 #1 - 해커가 코드 뒤에 있는 파일을 가져오는 경우 모든 데이터베이스 암호가 노출됩니다.이러한 페이지는 요청 시 컴파일됩니다.모든 항목을 대형 어셈블리로 미리 컴파일하도록 선택할 수 있습니다.그렇지 않으면 서버에 더 많은 부하가 걸립니다.
시나리오 #2 - 해커가 어셈블리를 가져오면 어셈블리가 난독화됩니다.난독화된 어셈블리는 크래킹하기가 더 어렵습니다.이러한 어셈블리는 사전 컴파일되므로 서버의 부하가 줄어듭니다.
자세한 정보:
웹 응용 프로그램 프로젝트는 MSBuild에서 빌드할 수 있습니다.웹 사이트는 조정이 많지 않습니다.자동 빌드와 함께 TeamSystem을 사용하는 경우 이 방법을 사용해야 합니다.
아무도 언급하지 않은 가장 큰 차이점은 모든 것이 하나의 DLL로 컴파일되는 모델을 통해 응용프로그램이 생성하는 클래스를 완벽하게 제어할 수 있다는 것입니다.프로그램의 위치를 알고 응용프로그램의 다른 위치에서 항상 참조할 수 있습니다.
단일 페이지 모델로는 이 작업을 수행할 수 없습니다.앱코드 디렉터리에 "stub" 클래스를 만들고 페이지에 있는 클래스를 상속함으로써 이 문제를 해결해야 하지만, 그것조차도 이상적이지 않고 복잡성을 가중시킵니다.
콘텐츠를 기반으로 런타임에 많은 사용자 컨트롤을 동적으로 로드하는 복잡한 동적 사이트를 개발하려고 할 때만 이러한 문제에 실제로 반대하게 될 것입니다.그런 다음 차이는 고통스러울 정도로 분명합니다. 따라서 나중에 동일한 모델로 돌아갈 수 있을 때까지 개발의 대부분이 ASP 1.1에서 중단되었습니다.
니치
두 가지 모두에 대한 경험에 비추어 볼 때, "웹 사이트"는 테스트 방법론이 없고, CI 서버가 없으며, 특정 페이지에 "핫픽스"를 정기적으로 권장하고 홍보하는 문화에서 사용됩니다."웹 애플리케이션"은 적절한 소프트웨어 방법론이 준수되고 "핫픽스"의 필요성이 발생하기 전에 깨끗한 코드를 작성하고 버그를 찾는 데 초점을 맞춘 장치 테스트(완전한 TDD가 아닌 경우)와 CI 서버가 있는 사실상의 표준입니다.
사이트는 웹 개발을 수행하는 2003년 오리지널 .NET 방식입니다.제 경험으로는 프로젝트 정의가 부족하여 재사용이 불가능하고 모듈식 코딩, TeamSystem 통합 및 네임스페이스 문제가 있기 때문에 매우 문제가 있습니다.도메인과의 일대일 바인딩과 실제 게시 추상화의 부족으로 인해 유지 관리 문제가 발생합니다.
!code 뒤에 있는 오래된 "고전적인" ASP 방식은 코드 재사용과 테스트를 다시 방해하기 때문에 심각한 문제이며, 핫픽스를 허용함으로써 종종 언급되는 이점은 실제로 개발 프로세스에 실패했다는 엄청난 신호입니다.핫픽스 기능은 물론 실행할 수 없는 것보다 낫지만, 결코 실행하고 싶지 않은 기능입니다.
당신은 웹 사이트 모델의 문제가 MS가 우리에게 대신 웹 앱을 제공할 정도로 컸다고 말할 수 있습니다.개인적으로 데모 코드 이상의 용도로는 절대 사용하지 않을 것입니다.아니요, 사실 저는 그렇게 하지도 않을 것입니다.
처음에는 웹 응용 프로그램 프로젝트가 있었습니다(현재 웹 사이트 프로젝트와 비슷하게 동작했습니다).그들은 일부 사용자가 요청한 내용을 반영하기 위해 변경했습니다.그러나 사람들은 예전의 기능을 되찾기를 원했기 때문에 원래의 웹 애플리케이션 프로젝트처럼 작동하는 웹 사이트 프로젝트를 다시 소개했습니다.
저와 제 직장은 웹 사이트 프로젝트를 선호합니다.
웹 사이트의 파일이 파일 시스템의 파일인 것이 좋습니다(수동으로 추가할 필요 없음).
전혀 모릅니다.
다음은 두 가지에 대한 두 가지 기사입니다.
http://damieng.com/blog/2008/02/07/web-site-vs-web-application
http://www.dotnetspider.com/resources/1520-Difference-between-web-site-web-application.aspx
참고: 웹 사이트의 많은 문제가 웹 배포 프로젝트를 통해 해결되었습니다.
업데이트: 포인트 1을 수정했습니다. 웹 애플리케이션이 먼저 설치되었습니다.
작업에서 OO 언어 기능(클래스 계층, 네임스페이스)을 활용해야 하거나 프로젝트 간 공통 코드(데이터 액세스, 클래스 립 등)를 재사용해야 하는 경우 웹 애플리케이션 프로젝트가 유일한 방법입니다.
웹 사이트 프로젝트(그 단서는 이름에 있습니다)는 웹 애플리케이션과 반대로 복잡한 '브로셔웨어' 사이트(페이지가 정적 콘텐츠로 구성된 사이트)에만 유용합니다.
거의 차이가 없으며, 웹 사이트 모델을 사용하는 것을 강력히 추천합니다.
주요 차이점은 웹 사이트의 경우 일부 파일을 특정 디렉터리에 배치해야 한다는 것입니다(코드 파일은 'App_Code' 디렉터리에 배치해야 함). 이외에도 매우 간단합니다.
배포를 위해 컴파일된 코드를 사용하는 것이 중요하고 단일 DLL(웹 사이트에 대해 일반적으로 게시할 때 생성되는 여러 DLL 대신)을 원하는 경우 다음 추가 기능을 사용할 수 있습니다. http://msdn.microsoft.com/en-us/asp.net/aa336619.aspx
언급URL : https://stackoverflow.com/questions/590501/difference-between-web-site-and-project-in-visual-studio
'programing' 카테고리의 다른 글
| numpy, scipy, matplotlib 및 pylab 간의 혼동 (0) | 2023.07.17 |
|---|---|
| 메모리에 이미지를 로드하지 않고 이미지 크기 가져오기 (0) | 2023.07.17 |
| Ruby에서 시스템() 호출의 출력을 가져오는 중 (0) | 2023.07.17 |
| 오라클 데이터베이스가 자동 커밋으로 설정되어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.07.17 |
| Python Git Module 경험이 있습니까? (0) | 2023.07.17 |