문제

다음 프로젝트와 함께 VS 솔루션이 있습니다.

-GUI
-데이터 접근
-BusinessLogic
-BusinessObjects

그러나 기본 모델 클래스는 어디에 살아야합니까? 이것은 일반적으로 데이터 액세스 계층의 결과 인 객체 세트와 가상 그리드를 사용하여 모델 내부의 데이터를 볼 수있는 캐시입니다. 질문은 MVC 또는 MVP를 사용하여 동일합니다.

생각?

도움이 되었습니까?

해결책

이것은 주관적인 질문이지만, 종종 모델 객체가 인프라에 직접적인 종속성을 가지고 있지 않다는 것을 종종 시행하기 위해 사람들은 종종 별도의 프로젝트에 넣습니다. 또한 다른 프로젝트가 이러한 모델 객체를 사용할 수있는 것을 고려해야합니다.

기능을 별도의 배포 가능한 장치 (어셈블리)로 분할하는 또 다른 옵션은 팀이보다 독립적으로 작동 할 수 있도록하는 것입니다. 배포 빈도 및 팀 자율성에 따라 별도의 프로젝트.

마지막으로, 모델 객체가 원격으로 (.NET 리모 팅과 같은) 원격으로 호출되고 웹 서버와 별개의 응용 프로그램 서버에서 제공되는 일부 프로젝트를 보았습니다. 나는이 접근법을 권장하지는 않지만 옵션입니다.

재사용을 계획하지 않고 동일한 조립에 배치한다는 사실을 인식한다면 허용 해당 프로젝트에 정의 된 다른 어떤 것과 함께 교차 종속성을 만들려면, 그렇게하지 않을 정도로 똑똑합니다. 동일한 프로젝트에 모두 배치 할 수 있습니다.

즉,이 프로젝트가있는 시간의 99%가 다음과 같습니다.

  • UI
  • 핵심
  • 고집
  • 테스트

그러나 여전히 프로젝트 요구 사항을 고려해야합니다.

다른 팁

나는 가지고있는 경향이있다

  • Justice.Project.Core - POCO 도메인 모델 - 즉 비즈니스 개체)
  • Justice.Project.Data - 지속성 체계가 상주하는 Nhibernate Mappings 등
  • Justice.Project.Services - 비즈니스 객체에 쉽게 맞을 수없는 비즈니스 로직뿐만 아니라 저장소 및 비즈니스 로직
  • Justice.Project.(Web|UI)

모델 ~이다 - 또는 해야한다 - 비즈니스 개체.

내 솔루션에는 3 개의 (비 테스트) 프로젝트가 있습니다

  1. UI- 명백합니다
  2. 핵심 - 모든 도메인 객체 및 비즈니스 로직
  3. 데이터 액세스 - 모델 객체 채우기/저장을위한 저장소 패턴

모델 객체가 Poco로 들어간다는 데 동의합니다. 그래서 주문 객체가 있다고 가정 해 봅시다. 내 질문은 주문 모음을 저장하는 수업이 어디에 있습니까 ??

그것은 당신의 비즈니스에 달려 있습니다. 아마도 몇 가지 다른 장소에서 주문을받을 것입니다 ...

고객 개체에서 각 고객에게 주문 수집이 있어야하므로 거기에 주문이 있어야합니다.

부서가있는 경우 각 부서에는 작성된 주문 모음이 있어야합니다.

창고가있는 경우 각 창고에는 주문을받을 책임이있는 주문이있을 수 있습니다.

일부 물체에는 부모가 없으며 괜찮습니다. 내 시스템에는 고객이 있습니다. 고객의 실제 소유자는 미국 (사업)이지만 시스템에는 "미국"객체가 없습니다. 고객 목록을 얻으려면 (이 경우) 저장소를 쿼리합니다.

IRespoistory<Client> repository = new Repository<Client>();
IList<Client> clients = repository.GetAllClients();

주문에 동일하게 적용될 수 있습니다.

이 DDD 책을 확인하는 것이 좋습니다. http://www.amazon.com/gp/product/0321268202/ref=s9k2a_c1_at1-rfc_p-3237_p?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-1&pf_rd_r=1BWAPTN787CTZXJDV5BA&pf_rd_t=101&pf_rd_p=463383351&pf_rd_i=507846

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top