나는 이것이 특정 프로젝트에 달려 있다고 생각합니다.
예를 들어 서로 다른 비즈니스 도메인이 서로 완전히 독립적 인 경우 비즈니스 도메인별로 구성합니다.
그러나 비즈니스 도메인간에 공유 코드가 있거나 비즈니스 도메인이 동일한 코드 기반의 다른 변형 인 경우 기술 도메인별로 구성하는 것이 더 논리적으로 보입니다. 그리고 어떤 종류의 객체 지향 언어를 사용한다면, 비즈니스 특정 파일에서 일반 컨트롤러, 모델 등을 서브 클래스 화하여 더 얇게 만들 수 있습니다.
또한 두 개의 스트립 아웃 공유 코드를 자체 도메인에 넣고 다른 도메인에서 사용하는 중간에 중간에 있습니다. 이를 통해 직감에 기반한 레이아웃을 제공하지만 비즈니스 도메인간에 코드를 공유 할 수 있습니다.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
추신. 대부분의 프레임 워크는 코드를 공유하고 별도의 프로젝트를 생성하는 경우에만 서로 다른 비즈니스 도메인을 단일 프로젝트로 혼합 할 것으로 기대하기 때문에 기술 영역별로 구성한다고 생각합니다 .
편집하다:
예를 들어 회사의 창고를 처리하는 웹 앱이 있다고 가정합니다. 일반적인 형태로 이것은 많은 회사에 적용될 수 있지만 각 회사는 충족되지 않은 일부 세부 사항을 가지고 있으며 구매를 금지 할 수 있습니다. 기본값이 2가 아닌 3 단계로 항목을 구성합니다.
물론 각 회사마다 프로젝트를 포크 할 수 있습니다. 그러나 프레임 워크 / 언어가 허용하는 경우 서브 클래 싱 또는 플러그인 등을 사용하여 일반 프로젝트의 비트와 조각을 모든 고객의 요구에 맞게 사용자 정의하고 비즈니스 도메인 레이아웃으로 구성 할 수 있습니다.
예를 들어 일반 프로젝트가 항목 자체 만 JSON으로 내보내는 경우 Domain1은 컨트롤러를 서브 클래스 화하고 최근 배달 문제도 내보낼 수 있습니다.
그리고 나중에 Domain1에 Domain2에도 유효한 구성 요소가있는 경우이를 일반 버전으로 공유로 추출 할 수 있습니다.
당신이 말했듯이, 많은 프레임 워크는 기술 영역별로 구성되며 이것이 내가 선택한 FW가 이것을 쉽게하기 때문에 지금까지 사용한 것입니다. 그러나 약간의 엘보우 그리스를 사용하면 비즈니스 도메인 레이아웃을 지원하기 위해 포함 경로를 다시 작성할 수 있다고 생각합니다.