«domain-driven-design» 태그된 질문

도메인 기반 디자인 (DDD)은 구현을 진화하는 모델에 연결하여 복잡한 요구에 맞는 소프트웨어를 개발하는 접근 방식입니다.

3
DDD : 도메인 이벤트 핸들러를 어디에 배치합니까?
도메인 이벤트 핸들러를 DDD에 배치하는 데 가장 적합한 계층에 대한 의견을 말씀해 주시겠습니까? 예를 들어, 새 계약을 추가 할 수있는 응용 프로그램 서비스가 있으며 계약이 추가되면 담당자에게 전자 메일 알림을 보내려고합니다. 전자 메일 보낸 사람 (ContractAdded 이벤트를 처리하는) 응용 프로그램 서비스 또는 도메인 서비스 또는 다른 것?

2
DDD에서 도메인 서비스는 본질적으로 단지 외관 및 / 또는 중재자 패턴입니까?
도메인 기반 디자인에서 도메인 계층은 여러 가지 (전통적인) 서비스를 가질 수 있습니다. 예를 들어, 사용자 도메인의 경우 다음이있을 수 있습니다. 다른 방법으로 User 객체를 빌드하는 UserFactory 인프라 계층에서 지속성 서비스와의 상호 작용을 담당하는 UserRepository 도메인 계층의 UserService는 단순히이 두 서비스 및 인프라 계층에 대한 중재자 및 / 또는 외관입니까?

2
도메인 / 지속성 모델 격리가 일반적으로 어색합니까?
DDD (Domain-Driven Design) 개념에 대해 살펴보면서 특히 도메인 격리 및 지속성 모델과 관련하여 이상한 원칙을 발견했습니다. 기본 이해는 다음과 같습니다. 기능 세트를 제공하는 응용 프로그램 계층의 서비스는 기능을 수행하는 데 필요한 리포지토리에서 도메인 개체를 요청합니다. 이 저장소의 구체적인 구현은 구현 된 스토리지에서 데이터를 가져옵니다. 이 서비스는 비즈니스 논리를 캡슐화하는 도메인 …

6
DDD가 OOP : 객체 지향 저장소를 구현하는 방법을 충족합니까?
DDD 저장소의 일반적인 구현은 예를 들어 save()메소드와 같이 OO처럼 보이지 않습니다 . package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } 인프라 부분 : package com.example.infrastructure; // imports... public class JdbcProductRepo implements …

2
객체 지향 디자인에서 수행해야 할 작업을 실제로 찾는 방법은 무엇입니까?
먼저 면책 조항 :이 질문 이이 웹 사이트에 적합한 지 잘 모르겠지만 초보자뿐만 아니라 다른 사람들에게도 여전히 관련 질문이 있습니다. 여기에 맞게 질문을 개선 할 수 있다면 int 의견을 지적하십시오. 그것이 맞지 않는다면, 나에게도 알려주십시오. 가능한 경우 이것에 대한 좋은 포럼을 찾지 못했기 때문에 이것이 논의 될 수있는 곳을 알려주십시오. …

2
Persistence-Ignorant 객체는 지연 로딩을 구현할 수 있습니까?
Persistence Ignorance 는 단일 책임 원칙을 적용한 것으로, 실제로 Domain Objects ( DO )에는 지속성과 관련된 코드가 없어야하며 대신 도메인 논리 만 포함해야합니다. a) 이것은 하위 계층 (즉, 영속 계층)과 접촉하는 코드 가 비즈니스 로직 계층의 다른 클래스 ( OC ) 에서 도메인 모델 외부에 존재한다는 것을 의미한다고 생각 합니까? …

2
이 디자인을 적절한 DDD에 더 가깝게 만드는 방법은 무엇입니까?
며칠 동안 DDD에 대해 읽었으며이 샘플 디자인에 도움이 필요합니다. DDD의 모든 규칙은 도메인 객체가 응용 프로그램 계층에 메소드를 표시 할 수없는 경우 어떻게 아무것도 구축 해야하는지에 대해 매우 혼란스럽게 만듭니다. 행동을 조정할 다른 곳? 리포지토리를 엔터티에 주입 할 수 없으므로 엔터티 자체가 상태에서 작동해야합니다. 그러면 엔터티가 도메인에서 다른 것을 알아야하지만 …

4
부풀린 도메인 객체 피하기
DDD 접근 방식을 사용하여 데이터를 부풀린 서비스 계층에서 도메인 계층으로 이동하려고합니다. 우리는 현재 서비스에 많은 비즈니스 로직을 가지고 있으며, 이는 여러 곳에 퍼져 있으며 상속의 혜택을받지 않습니다. 우리는 대부분의 작업에 초점을 맞춘 중앙 도메인 클래스를 가지고 있습니다-무역. Trade 객체는 가격 책정 방법, 위험 평가 방법, 자체 검증 방법 등을 알게됩니다. …

5
현대 ORM (EF, nHibernate)에 리포지토리 패턴이 과도하게 사용된다면 더 나은 추상화는 무엇입니까?
최근에는 작업 단위 기능과 함께 저장소와 같은 기능을 통합하기 때문에 강력한 Entity Framework와 같은 강력한 ORM과 함께 저장소 패턴을 사용하는 것에 대한 많은 주장을 읽었습니다. 단위 테스트와 같은 상황에서 패턴을 사용하지 않는 것에 대한 또 다른 주장은 더 일반적인 구현은 IQueryable을 활용하기 때문에 저장소 패턴이 누출되는 것입니다. 저장소 패턴을 사용하는 …

2
CQRS + 이벤트 소싱 : (정확한가) 명령은 일반적으로 지점 간 통신되고 도메인 이벤트는 pub / sub를 통해 통신됩니까?
나는 기본적으로 CQRS 의 개념 과 관련 개념에 대해 머리를 감싸려고합니다 . CQRS가 메시징과 이벤트 소싱을 반드시 통합 할 필요는 없지만, 이러한 개념을 결합한 많은 예제 / 블로그 게시물에서 볼 수 있듯이 좋은 조합으로 보입니다. 무언가에 대한 상태 변경에 대한 유스 케이스가 주어지면 (SO에 대한 질문을 업데이트하는 것과 같이) 다음 …

5
엔터티 프레임 워크를 사용한 도메인 기반 디자인의 함정
내가 공부 한 DDD에 대한 많은 튜토리얼이 대부분 이론을 다루고 있습니다. 그것들은 모두 기본적인 코드 예제를 가지고 있습니다 (Pluralsight 및 이와 유사한). 웹에서는 소수의 사람들이 EDD를 사용하여 DDD를 다루는 학습서를 작성하려고 시도합니다. 잠깐 공부를 시작하면 서로 다른 점을 빨리 알 수 있습니다. 어떤 사람들은 앱을 최소한으로 유지하고 EF 위에 저장소 …

3
DDD에서 저장소가 엔티티 또는 도메인 오브젝트를 노출해야합니까?
내가 이해했듯이 DDD에서는 집계 루트와 함께 저장소 패턴을 사용하는 것이 적절합니다. 내 질문은 데이터를 엔티티 또는 도메인 객체 / DTO로 반환해야합니까? 어쩌면 일부 코드는 내 질문을 더 설명 할 것입니다. 실재 public class Customer { public Guid Id { get; set; } public string FirstName { get; set; } public …

1
CQRS + 이벤트 소싱 아키텍처에서 Add / Create * 명령을 처리하는 방법
Event Sourcing과 함께 CQRS 패턴을 사용하여 첫 번째 응용 프로그램을 구현하고 싶습니다. 골재 뿌리 생성이 올바르게 처리되어야하는지 궁금합니다. 누군가 CreateItem 명령을 보낸다고 가정 해 봅시다. 어떻게 처리해야합니까? ItemCreated 이벤트를 어디에 저장해야합니까? 새로운 아이템의 첫 번째 이벤트로? 아니면 모든 항목을 집계하고 해당 이벤트 목록이 ItemCreated 이벤트로만 구성된 일종의 ItemList 엔티티가 있어야합니까? …

1
모듈 식 서비스 응용 프로그램 설계
나는 본질적으로 매우 모듈화 된 새로운 솔루션을 설계하고 미래의 쉬운 확장, 명확한 문제 분리, 모듈 별 라이센싱 등을 가능하게하는 디자인을 지원하는 구조를 만들고 싶습니다. 웹에서 모듈 식 또는 복합 응용 프로그램에 대해 UI 중심이며 Silverlight, WPF 등에 중점을 둡니다. 필자의 경우 다양한 UI 프로젝트를 수행하는 다른 개발자가 사용할 WCF 서비스 …

2
DDD의 예외
DDD를 배우고 있으며 특정 상황에서 예외를 던지는 것에 대해 생각하고 있습니다. 객체가 나쁜 상태로 들어갈 수 없으므로 예외는 괜찮지 만 많은 예에서 데이터베이스에 전자 메일이있는 새 사용자를 추가하려고하면 예를 들어 예외가 발생합니다. public function doIt(UserData $userData) { $user = $this->userRepository->byEmail($userData->email()); if ($user) { throw new UserAlreadyExistsException(); } $this->userRepository->add( new User( …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.