2011-02-18 3 views
2

좋아, 그래서 MVC, EF4, 저장소 패턴, UoW, 서비스 레이어 등에 대한 모든 종류의 멋진 정보를 가져 왔고 지금은 함께 정리하려고 시도 할 것입니다.ASP.NET MVC Application Design

제 질문은 어떻게 분리해야합니까? 이 같은

내가 생각 프로젝트 :

1) 응용 프로그램 - MVC 응용 프로그램
2) 저장소 계층 3) 엔티티 - EF4/부분 엔티티 클래스

어떤 제안이 좋은 것!

감사합니다, 샘

+1

이것은 MVC 패턴에 익숙하지 않고 올바른 아키텍처에 대한 지식을 더 얻고 자하는 사람들에게 큰 질문입니다. 나는 그 대답을 고대하고있다 – stephen776

답변

5

다음은 응용 프로그램을 구조화 할 수있는 방법에 대한 한 가지 예입니다 :

  1. 도메인 모델 (주 POCO 개체)가에 따라 일부 데이터 액세스 기술의
  2. 저장소 (구현 프로젝트 요구 사항 : EF, NHibernate, LINQ to XML, 원격 웹 서비스 호출 ...)
  3. 서비스 (여러 CRUD 작업을 비즈니스 운영으로 통합하는 비즈니스 운영 L은 도메인 객체와 뷰 모델)

이 층의 물리적 거리를 나타낼 수의 도메인 객체)

  • ASP.NET MVC 애플리케이션 (컨트롤러, 뷰, 뷰 모델 매퍼로 노출 (어셈블리) 또는 논리적으로 동일한 어셈블리로 분리 할 수 ​​있습니다.

  • +0

    내가 볼 수있는 표본을 가지고 있니? 나는 1 & 2에서 약간 혼란 스럽습니다. 조금 더 자세히 설명해 주시겠습니까? 또한 서비스 계층은 EF로 생성 된 객체로 작업하고 있습니까? 도메인 객체가 EF 생성 객체입니까? - 감사!! – Sam

    +3

    @Sam Striano, 내가 작성한 샘플 MVC 프로젝트 구조는 다음과 같습니다 (서비스 계층 => 컨트롤러는 저장소를 호출하지 않습니다) : https://github.com/darind/samplemvc. 정교하게 노력하자. 서비스 계층은 EF 생성 객체로 작동하지 않는다. 1에서 정의한 도메인 모델로 작업하고 있습니다. EF 객체는 EF 특정 항목으로 오염되어 있습니다 (코드 우선을 사용하지 않는 한 EF 코드 첫 번째 모델이 포인트 1이됩니다). 모델은 사용중인 데이터 액세스 기술과 관련되어서는 안됩니다. 자동 생성 된 EF 클래스는 절대로 각 레이어의 경계를 벗어나서는 안됩니다. –

    +0

    샘플 응용 프로그램 구조에서 EF는 어디에 적합하고 서비스 계층은 어디에 있습니까? - 감사!! – Sam

    3

    배포 또는 코드 공유와 같은 물리적 인 이유가있을 때까지 코드를 물리적으로 분리하지 마십시오. 폴더와 네임 스페이스를 사용하십시오.

    +1

    프로젝트를 시작할 때 별도의 프로젝트를 만드는 것이 정말 쉽습니다. 그것은 코드에서 좋은 분리를 시행하고 (레이어 간 상호 의존성이 없음) 잠재적 인 리팩토링 두통을 줄여줍니다. 전이 일을하지 않을 이유가 없습니다. 또한 TDD를 수행하는 경우 끊임없이 재구성하여 개발주기를 가속화하거나 생각 프로세스를 자주 방해하지 않는 코드가 적습니다. – Ryan

    3

    나는 이걸 처음 겪었고, 내가 찾은 최선의 접근 방식은 S#arp Architecture입니다.

    우수한 템플릿은 프로젝트 스캐 폴딩을 생성하며 실제 프로젝트 분리가 필요한 이유에 대한 좋은 설명이됩니다. Good argument here. Theyre 튜토리얼은이 모델을 가진 TDD가 어떻게 산들 바람인지 보여줍니다.

    이 모델의 장점은 EF를 사용하고 싶다면 NHibernate를 스왑하기 위해 EF를 사용하려는 경우 걱정거리를 분리하는 것입니다.