2009-02-03 2 views
7

MVC 폴더 구조에서 일반 클래스 파일은 어디에 있어야합니까? 예를 들어, 사용할 DataContext를 결정하는 클래스가 있으므로 각 컨트롤러에서 휠을 다시 작성하지는 않습니다. 그것은 컨트롤러가 아니더라도 컨트롤러 폴더에 있어야합니까? 그것이 모델이 아니더라도 데이터베이스와 관련이 있기 때문에 모델과 함께 있어야할까요? 아마도 Views \ Shared 폴더일까요? 또는 콘텐츠가 그런 종류의 콘텐츠를 포착하는 폴더입니까? 나는 어느 곳에 나 둘 수 있다고 확신하지만, 나는 "적당한"장소가 어디에 있는지 궁금해하고 있었다.MVC 일반 클래스 위치

답변

8

컨트롤러, 콘텐츠 또는보기가 아니므로 사용하지 마십시오. 모델과 가장 밀접한 관련이 있기 때문에 "Helpers"또는 "Utility"등의 하위 폴더에 모델로 넣을 수 있습니다. 또는 서비스라고하는 다른 최상위 폴더를 추가하여 거기에 넣을 수 있습니다. 바로 이것이 컨트롤러와 모델 사이의 중간 논리 인 모든 앱 로직을 집어 넣는 곳입니다.

+0

모든 애플리케이션 로직을 프리젠 테이션 레이어 프로젝트에 넣으시겠습니까? 끔찍한 소리가 난다. ... –

+0

작은 프로젝트를 위해 나는 거기에 넣었다. 서비스가 재사용 될 경우 자체 프로젝트가 생성됩니다. –

0

자체적으로 유용 할 수 있다면 (명령 줄 도구로 생각하면됩니다), 모델 폴더에 넣으십시오. 컨트롤러의 도우미로만 사용되는 경우 Controllers 폴더에 넣으십시오.

3

당신은 롭의 MVC 점포를 보면 : (Commerce.MVC.Data 등) 별도의 클래스 라이브러리 프로젝트

+0

롭이하는 일에 관한 것이 아니라, 그 이상의 것입니다. 그것은 책임의 분리 등에서의 단순한 표준 접근 방법입니다. 데이터 액세스는 애플리케이션의 프리젠 테이션 레이어에 아무런 의미가없는 한 페이지 애플리케이션에 대해 언급하지 않는 한 비즈니스를 수행하지 않습니다. –

0
정말 그것이 데이터 액세스 레이어에 있어야 데이터에 액세스하는 경우는, 무엇에 따라 달라집니다

, 그렇지 않으면 그것을 컨트롤러 폴더에 넣을 수 있습니다.

0

dmajkic,

왜 자체 영역으로 분리해야합니까? BLL 코드가 컨트롤러 폴더에 있어야합니다. DAL 관련 항목 인 경우 모델에 있어야합니다. 프로젝트가 거대 해지고 하위 폴더를 만들고 싶습니다. 문제가되지 않아야합니다. 그러나 다른 계층에 코드를 두는 것은 MVC의 목적을 실제로 무방입니까?

+1

MVC는보기 패턴입니다. 그것은 프리젠 테이션 레이어와 관련이 있습니다. 컨트롤러는 프리젠 테이션 로직만을 포함해야합니다. 컨트롤러 클래스에는 비즈니스 로직이 없어야합니다. dmajkic은 클래스를 별도의 프로젝트가 아닌 별도의 프로젝트에 배치한다고 말했습니다. – liammclennan

+0

@liammclennan - 정확히 알레르기가 뭔지 모르겠지만 어쩌면 그만 두어야 할 것입니다. –

0

별도의 DataAccess 어셈블리가 있고 해당 클래스를 내부적으로 만들고 DataContextFactory라고합니다.