2008-10-07 3 views
5

일반적으로 MVC의 frameeworks 같은 것을 보이는 구조를 가지고 :MVC 프레임 워크에서 다른 개발자가 예상하는 디렉토리 구조는 무엇입니까?

/models 
/views 
/controllers 
/utils 

그러나, 웹 응용 프로그램 제품군에, 나는 함께 모든 모델, 뷰, 컨트롤러를 응집하는 것은 아마 최고의하지 않다고 결정했습니다 명확하게 말하면, 시스템을 애플리케이션 세트 대신 하나의 애플리케이션으로 취급하지 않는 한. 그러나 사용자와 사용자 역할의 개념처럼 모든 "응용 프로그램"을 하나로 묶는 것이 있습니다.

그래서 나는 세 가지 가능한 솔루션이 있습니다

(1) 난 정말이 속한 관계없이되는 앱있는, 수행과 함께 모든 모델, 뷰, 컨트롤러를 유지하고 싶지해야 할 일. 이것은 스위트를 하나의 어플리케이션으로 취급합니다. 사용자를 포함하여 여러 개의 공통 스레드에 의해 묶여 있기 때문입니다.

(2) 응용 프로그램별로 코드를 그룹화하십시오.

/app1 
    /models 
    /views 
    /controllers 
    /utils 
/app2 
    /models 
    /views 
    /controllers 
    /utils 

(3) 유틸리티 코드를 모든 응용 프로그램에서 공유 할 수 있도록 코드를 유형별로 그룹화하십시오.

/models 
    /app1 
    /app2 
/views 
    /app1 
    /app2 
/controllers 
    /app1 
    /app2 
/utils 

내가 빠진 옵션이 있습니까? 미래 개발자에게 가장 논리적 인 계획은 무엇입니까? 나는 개인적으로 2와 3을 선호하지만 아마도 대부분의 사람들은 1을 기대할 것입니다.

답변

5

응용 프로그램의 분리가 필요하다고 가정 할 때 2) 가장 좋은 옵션이 될 것 같습니다. "/ app #"레벨에 "/ common"폴더가있어 공유 유틸리티 클래스 같은 모든 어플리케이션에서 공유 리소스를 가질 수 있습니다.

1

귀하의 앱이 데이터를 공유한다면 모델을 그룹화하는 것이 의미가 있습니다.

그러나 뷰와 컨트롤러의 경우 분리 된 비즈니스 로직과 프리젠 테이션이 있다고 가정하기 때문에 뷰와 컨트롤러의 경우 별도로 유지하는 것이 좋습니다.

또한 앱이 버전 컨트롤 (버전 관리를 사용하고 있습니까?)에 별도로 보관되는 경우 첫 번째 또는 세 번째 옵션을 구현하기가 어렵습니다.

모든 것이 고려되었으므로 두 번째 예와 같이 최상위 수준에서 앱을 분리 할 수 ​​있습니다.

1

일반적으로 기능별로 코드를 그룹화합니다. 따라서 애플리케이션별로 그룹화하는 것이 나에게 가장 적합합니다. 그 이유는 특정 기능을 사용하고 싶다면 필자가 필요로하는 구성 요소를 찾는 별도의 폴더 세 개를 검색 할 필요가 없기 때문입니다. 높은 수준의 기능으로 그룹화하면 필요한 모든 것이 함께 있다는 것을 알 수 있습니다.

6

2로 시작하는 것이 좋습니다. 응용 프로그램 제품군의 모든 응용 프로그램에서 사용하는 공통 모델,보기 및 유틸리티를 저장할 수있는 공용 폴더가 있어야합니다.

/app1 
    /models 
    /views 
    /controllers 
    /utils 
/app2 
    /models 
    /views 
    /controllers 
    /utils 
/common 
    /models 
    /views 
    /utils 
+0

이것은 확실히 가장 실용적인 솔루션처럼 보입니다. – CodeVirtuoso

관련 문제