도메인 구동 설계에서 도메인 (네임 스페이스)을 어떻게 인수합니까?

StackOverflow https://stackoverflow.com/questions/619131

  •  03-07-2019
  •  | 
  •  

문제

도메인 구동 설계에서 도메인 (네임 스페이스)을 어떻게 인수합니까?

나는 다음 개념으로 옮겨 가고 있습니다.

Project.Entity
  Project.Entity.Abstracts
  Project.Entity.Entities
  Project.Entity.Extensions
  Project.Entity.Immutables
  Project.Entity.Interfaces
  Project.Entity.Repositories

예를 들어, "Content"라는 CMS에 엔티티가 있습니다. 따라서 Project.Content라는 프로젝트를 만들고 수업을 다음과 같이 보이게합니다.

interface IContent
class Content : IContent

interface IContentRepository
class ContentRepository : IContentRepository

이 "컨텐츠"엔티티 모델에는 자체 네임 스페이스가 있습니다.

그러나 나는 그것이 12 개가 넘는 프로젝트 (18 개)의 "엔터티"모델을 갖춘 대규모 엔터프라이즈 환경에서는 확장되지 않는다는 것을 알게되었습니다. 나는 12 개가 넘는 프로젝트가있는 솔루션으로 끝나며, 그 중 일부는 2 ~ 3 개의 클래스 (예 : Urlrewriter) 만 있습니다. 또한 인터페이스에 대해서만 다른 프로젝트를 참조합니다. 나는 이것이 내 도메인을 다루는 것 같은 느낌이 든다. 구체적인 참조는 아니지만 때로는 원형 참조를 유지하기가 어렵습니다.

그래서 나는 때때로 "레이어"개념으로 돌아갑니다 ...

다른 DDD 전문가가 엔터프라이즈 크기 응용 프로그램을 고려하는 방법을 알고 싶습니다. 책과 기사를 자유롭게 추천하십시오.

그리고 미리 감사드립니다!

도움이 되었습니까?

해결책

내가하는 생각은 경계 컨텍스트를 식별하는 무언가를 추가하는 것입니다.

추신. 왜 그런지 명확하게하려면 경계 컨텍스트에서 두 링크를 모두 확인하십시오. http://dddcommunity.org/discussion/messageboardarchive/boundedcontext.html, http://devlicio.us/blogs/casey/archive/2009/02/11/ddd-bounded-contexts.aspx

다른 팁

나는 다음을 사용한다 .NET 지침. 나는 그것들이 매우 직관적이며 필요하지 않은 것을 가져올 필요가 없도록 네임 스페이스를 설정할 수 있습니다.

나는 피처 레벨에 대한 엄격한 이름 지정 컨벤션을 결코 부과하지 않을 것입니다. 각각의 다른 프로젝트의 디자인은이를 안내해야합니다.

나는 당신과 비슷하게 프로젝트를 다루는 것이 관리의 고통이된다는 것을 알게되었습니다. 나는 선호한다

Project.Domain
Project.DataAccess
Project.Presentation (presenters and such) 
Project.Gui (in case of a winforms app)

설정.

일을 단순하게 만드는 것은 일이 나빠질 때 많은 도움이됩니다.

문제는 다른 프로젝트를 만들 때 무엇을 얻습니까? (거의 쉽게하기가 매우 쉽습니다)

그 프로젝트를 독립적으로 사용하고 싶습니까? 결과적으로 .dlls로 끝날 수 있으므로 정확히 동일한 버전 등을 배포 할 수 없습니다.이 경우 분할하고 IDE를 혼란스럽게 할 이유가 거의 없습니다).

필요가 발생하면 나중에 새로운 프로젝트로 모든 것을 옮길 수 있습니다. 다소 고통 스럽지만 그때까지는 그 느낌과는 별도로 일을해야 할 좋은 이유가있을 것입니다.

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