2009-02-01 2 views
13

VS 솔루션 탐색기의 Add ASP.NET Folder 하위 메뉴에서 App_Code가 어떻게 선택되지 않습니까? 나는 당신이 새로운 폴더의 이름을 변경함으로써 수동으로 하나를 만들 수 있다는 것을 알고 있지만, 이성적 무엇입니까? 이것은 "유틸리티"또는 "서비스 계층"유형 클래스를 넣어야하는 곳이 아닌가?ASP.NET MVC 프로젝트 및 App_Code 폴더

MVC 프로젝트 쪽 메모에서. 기본 ASP.NET Web Form Projects와 달리 System.Configuration에 대한 참조가 기본적으로 제공된다는 사실을 좋아합니다.

답변

10

Microsoft가 MVC를 수행하기 위해 VS가 필요하다는 이유로 구매를 원하기 때문에 실질적인 대답이 있습니다. 그러나 프로젝트를 작업하기가 더 쉬운 순수한 JIT로 변환하려면 ...

아주 간단합니다.

(1)를 배치 App_Code에 클래스 파일을 포함하는 모든 폴더를 이동하는 특성을 제거하여
이 (2) Global.asax는 뒤에 코드 또는 상속 참조를 필요로하지 않는 확인 (어디 있는지보기 폴더를 떠나)

[script runat="server"] 
... place contents of code behind's class inner code 
[/script] 

및 대한 뒤에 코드를 삭제 좋은

(3) Bin에서 MVC
(4) 다시 실행의 측면에서 다른 필요한 DLL을 계속 확인하고 프로젝트 DLL 참조를 제거 솔루션 파일 및 속성 폴더 및 obj 폴더 이동

JIT의 웹 티어로 작업하는 것이 훨씬 간단하기 때문에 nop MVC를 정기적으로 수행합니다. 이 기능을 이해하지 못하는 개발자는 다양한 웹 사이트에서 매일 필요한 다양한 사용자 지정 빠른 수정을 통해 트렌드에서 작업하지 않습니다. 우리가 작업하는 사이트는 하루에 수천 번의 히트를 얻으므로 JIT를 사용하면 초기 충돌 후에 성능이 저하되지 않습니다.
소규모 웹 사이트 개발의 경우 더 적게 보입니다.

+1

끝내주는 "해결". – BuddyJoe

+1

그런데 MVC 작업을 중단했습니다. URL 재 작성을 사용하여 순수한 매트릭스 스타일 만 사용합니다. 톤이 적습니다. 글쎄, 나는 우리가 그곳에있는 동안 어쨌든 모든 Linuxy를 시작하고있다. Node.js가 실제로 그것을 죽이고 있습니다. –

+0

또한 [RequireHttps]를 테스트하고 코드에 많은 양의 junk 문없이 혼자있게 할 수 있습니다. –

10

일반적으로 "서비스 계층"및 "유틸리티"클래스를 별도의 프로젝트에 배치하고이를 내 웹 응용 프로그램에 대한 참조로 추가합니다. MVC 프레임 워크에서는 런타임에 클래스를 컴파일 할 필요가 없습니다.

+0

개발 속도는 어떻습니까? 코드 변경/브라우저 저장/새로 고침 대 코드 변경/저장/빌드 .../브라우저 새로 고침. –

+0

David, 프로젝트를 동일한 솔루션에 배치하고 참조 프로젝트 또는 완전히 다른 프로젝트를 배치하고 참조를 가져옵니다? – johnny

+1

@ johnny 다른 곳에서 다시 사용하는 범용 라이브러리가 아닌 한 동일한 솔루션. –

21

이것은 ASP.NET MVC 프로젝트가 웹 사이트가 아닌 웹 응용 프로그램이기 때문일 수 있습니다. 웹 사이트에서 클래스 파일은 런타임에 동적으로 컴파일되므로 App_Code 폴더에 있어야합니다. 웹 애플리케이션에서는 모든 것이 정적으로 컴파일되고 클래스 파일은 웹 애플리케이션의 어느 곳에서나 사용할 수 있습니다.

David Brown이 지적했듯이 별도의 클래스 라이브러리에 별도의 클래스 정의를 넣은 다음 웹 응용 프로그램에서이를 참조하는 것이 좋습니다. 단위 테스트를 작성하거나 설정 파일에서 클래스를 참조하는 경우 웹 응용 프로그램에서만 정의 된 클래스에 액세스하는 것은 어려울 수도 있고 불가능할 수도 있습니다.

+0

+1. 나는 또한 그것이 "웹 어플리케이션으로 변환"이라는 것을 알아 차렸다. 왜 MVC에서 옵션입니까? – BuddyJoe

+0

+1은 내가 한 것보다 더 잘 설명합니다. ;) –

+0

역설적이게도 "웹 응용 프로그램으로 변환"은 웹 응용 프로그램에서만 사용할 수 있습니다! 이 옵션은 실제로 웹 사이트에서 변환 된 웹 응용 프로그램 용입니다. 이것은 모든 aspx 및 ascx 파일을 거쳐 웹 응용 프로그램 형식으로 변환합니다. – davogones

0

두 번째 프로젝트/클래스 라이브러리를 원하지 않고 소수의 C# 클래스에 대한 간단한 폴더를 원한다면 "App_Classes"를 제안합니다.