2010-02-16 2 views
6

도메인 기반 디자인을 사용하여 개발 된 블로그 응용 프로그램에서 'Post'엔티티는 관련된 태그 엔티티 컬렉션을 가지고 있습니다.도메인 기반 디자인 - 리포지토리 또는 서비스로 외부 데이터 API

게시물을 만들 때 (예 : UI에서 개체를 채우는 경우) 게시물의 콘텐츠를 가져와 연관성을위한 의미 태그 (link text)를 추출하는 REST를 통해 제 3 자 API를 호출하고 싶습니다.

홈페이지 질문 : 포스트 엔티티가 컨텐츠를 전달하는 등 PostServices.GetTags (Postcontent)와 같은 도메인 서비스를 호출 할 수 있도록

이가 최고의 디자인 이것은 무엇을 디자인하는 가장 좋은 방법은 ... 그리고 태그 목록을 다시 검색합니다.

** PostServices.GetTags는 추가 래퍼 클래스를 통해 REST API와 인터페이스합니다.

또는 타사 API를 저장소로 래핑해야합니까?

Post.GenerateTags() 함수가 도메인 엔터티 내에 존재하지 않아야합니까?

또한 질문 :

1 : 나는 또한 도메인 서비스 도메인 엔티티 반대를하는 것이 좋습니다가 아니라는 것을 읽었습니다. 사실입니까?

2 : PostServices 도메인 서비스에 대한 참조를 공장 만들기 방법으로 가져 오는 것이 좋습니까? 예 :

IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

3 : 타사 API에 도메인 서비스를 결합 할 수 있습니까?

4 도메인 엔티티는 REST API를 호출 한 응용 프로그램 계층을 통해 수신 된 태그를 처리하는 방법을 알고 있어야합니다.

DDD에서 천천히 내 머리를 쓰려고했지만, 이런 종류의 구현 방법에 대한 예제를 찾을 수없는 것 같습니다.

답변

3

블로그 애플리케이션에서 포스트는 엔티티이고 태그는 값 객체입니다. 태그에는 ID가 없습니다. 당신이 있어야합니다

  • PostsRepository
  • 포스트 게시물이 태그의 목록을 가지고있다

(법인)

  • 태그 (값 개체).

    질문 :

    1 : 나는 또한 도메인 서비스 도메인 엔티티 반대를하는 것이 좋습니다가 아니라는 것을 읽었습니다. 사실입니까?

    예, 그렇지 않습니다. 엔티티는 도메인 서비스와 결합되기를 원하지 않습니다. 그렇게하면 나중에 다시 사용할 수 없습니다.도메인 이벤트를 발생시키는 것을 고려 했습니까? 서비스 도메인이 무언가의 도메인 이벤트를 수행한다고 말할 수 있습니다.

    2. 공장 제작 방법을 통해 PostServices 도메인 서비스에 대한 참조를 얻는 것이 좋습니까? 예 : IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

    예, 가능합니다. 팩토리 메서드는 추상 클래스 또는 인터페이스를 반환 할 수 있습니다. 이것은 훌륭한 소프트웨어 설계 원칙 "구현이 아닌 인터페이스에 대한 코드"입니다. 이렇게하면 나중에 구현을 변경할 수 있으며 클라이언트 코드를 변경할 필요가 없습니다.

    3 : 도메인 서비스를 타사 API에 결합 할 수 있습니까?

    권장하지 않지만 허용됩니다.

    죄송합니다, 질문 4를 이해할 수 없습니다.

    이 링크를보세요. 나는 그것이 당신을 돕기를 바랍니다.

    https://stackoverflow.com/questions/901462/ddd-where-is-it-most-appropriate-to-get-a-list-of-value-objects/901562#901562

  • +0

    답변을 주셔서 감사합니다. 그러나 저는 아직 조금 명확하지 않습니다. Post 엔티티가 태그를 제공하는 도메인 서비스에 대한 참조를 얻기 위해 팩토리를 사용하도록 제안하고 있습니까? 또한 태그는 내 시스템에서 고유하며 기본 키를 통해 식별됩니다. 이는 태그가 엔티티임을 의미합니까? – sjb101

    +0

    방금 ​​값 개체에 대한 설명을 제공하는 다음 링크를 발견했습니다 ... http://tech.groups.yahoo.com/group/domaindrivendesign/message/6290 그래서 태그는 값 개체 여야합니다. 어쨌든 위의 주요 질문 ...... – sjb101

    +0

    아니오, 포스트는 태그 목록을 가지고 있습니다. 그리고 PostsRespository에서 태그를 검색 할 수 있습니다. 블로그는 쉬운 도메인입니다. 게시물, 태그 및 댓글 만 있습니다. 나는 왜 당신이 도메인 서비스를 필요로하는지 undestand하지 않는다. 도메인 서비스의 책임은 무엇입니까? – yeraycaballero

    관련 문제