6

현재 프로젝트를 리팩토링하려고하는 임 (asp.net mvc)은 전혀 별거가 없습니다. 그냥 폴더 :의이 프로젝트는 모든 EF 데이터를 사용하는 프로젝트는 여러 저장소를 가지고 asp.net의 다소 큰 웹 사이트에 대해 권장되는 솔루션 구조

  • EF 코드 첫 번째 클래스 (People.cs, Exam.cs, Message.cs 등)의 무리 (이

    • 컨텍스트)
    • 그리고 물론 컨트롤러의 많은 및 viewmodels

    우리는 테스트 프로젝트를 가지고 있지만 우리가 정말 지금의로 작업이 아니 뭔가 그래서 우리는 TDD에 아주 좋은이 arent.

    프로젝트에서 다루어야 할 다른 책임에 대해 명확하게 구분하고 싶습니다.이를 달성 한 좋은 프로젝트 구조에 대한 조언을 주시면 감사하겠습니다.

    도와주세요. 사전에 감사 도메인 기반 디자인 (DDD) 다음과 같은 프로젝트를 만드는 것이 밖으로 누워 중 하나 제안 방법은 다음과 같은 제안

  • 답변

    12

    나는 것 :

    Company.Project.Web < - 당신의 MVC 응용 프로그램을하지만 당신은 여전히 ​​수 데이터 전송 객체 (DTO의), ViewModels, 비즈니스 로직, 이벤트 Company.Project.Data < - - 저장소 인터페이스

    Company.Project.Data.EF < - 엔트 웹폼에게 Company.Project.Domain <를 사용 저장소의 ityFramework 특정 구현 Company.Project.Model < - 당신의 EF CodeFirst 클래스

    Company.Common < - 유틸리티 및/또는 확장

    의 일반적인 프로젝트는 당신이 패턴에서 프로젝트 실크 http://silk.codeplex.com/를 살펴 제안 및 연습 팀. HTML 5 및 jQuery (vNext)에서 믹싱뿐만 아니라 DDD, 저장소 및 MVC의 훌륭한 참조 구현.

    +0

    인터페이스 추가에 동의하고 IoC 컨테이너를 사용하여 런타임시 구현 인터페이스를 해결할 수 있습니다. –

    +0

    viewModels는 서비스 계층 (비즈니스 로직)과 전혀 상호 작용하지 않아야한다는 것을 읽었습니다. 그들은 웹 프로젝트를 유지해야합니까? – ignaciofuentes

    +0

    우리는 일반적으로 ViewModels을 웹 프로젝트에 유지합니다. 하지만 DTO는 웹 또는 서비스 또는 WPF (XAML)와 같은 프리젠 테이션 계층에서 직접 사용할 수 있습니다. Unity와 같은 IoC 컨테이너는 우리의 관심사를 분리하고 우리의 서비스 의존성을 주입해야합니다. – jdmonty

    11

    우리는 jdmonty에서 언급 한 것과 비슷한 디자인을 사용하지만 조금 더 간단합니다. - MVC 응용 프로그램

  • ApplicationName.Services - 비즈니스 로직
  • ApplicationName.Domain - EF CodeFirst 클래스와 그들에 행동 저장소

    • ApplicationName.Web : 우리는 다음과 같이
    • ApplicationName.Common - 복수의 프로젝트에서 사용되는 클래스 및 유틸리티
    • ApplicationName.Tests - 테스트 다양한 프로젝트

    웹 프로젝트는 서비스 프로젝트에 의존합니다.서비스 프로젝트는 도메인 프로젝트에 종속됩니다.

  • +0

    감사합니다. 깨끗하게 보입니다 ... ViewModels를 유지하는 위치에 대해 좀 더 자세히 설명해 주시겠습니까? ... 서비스 프로젝트와 상호 작용합니까? – ignaciofuentes

    +3

    언급 한 것처럼 서비스 모델과 전혀 상호 작용하지 않아야하기 때문에 ViewModels을 웹 프로젝트에 유지합니다. ViewModel은 뷰와 컨트롤러간에 데이터를 전송하는 데 단독으로 사용됩니다. –

    +0

    Nick, 유효성 검사를 위해 뷰 모델에서 DataAnnotations를 사용하고 있습니까? 그렇다면이 검증이 비즈니스 논리라고 말할 수 있습니까? –

    관련 문제