RE: How to differentiate a concept is domain logic or application logic ?
Rishikesh Parkhe <[email protected]>
| Newsgroups | gmane.comp.programming.domain-driven-design |
|---|---|
| Message-ID | <[email protected]> |
(1) Crux here is to be able to model the domain as accurately as possible, that way the core domain objects / entities / concept / procedures reside in the heart of the software. Rest of the system is more or less software engineering. The domain layer certainly should not say "how" to persist, but it should clearly say "what" to. Repository is only an interface, concrete implementation may lie in a different layer. (2) Domain expert's views are valuable throughout the system. Application layer is merely for separation of the use cases into a more logical place, it also allows certain level of decoupling from other layers. Hence, can be changed without affecting the core domain. Even though application layer may provide interface to user / work flows, the core domain logic is better if separated into the domain layer with POJOs / POCOs / etc. Regards, Rishikesh Parkhe Sent from my Windows Phone ________________________________ From: [email protected]<mailto:[email protected]> Sent: 11-01-2014 02:51 To: [email protected]<mailto:[email protected]> Subject: [domaindrivendesign] How to differentiate a concept is domain logic or application logic ? Domain layer encapsulates the domain logic . Application layer encapsulates application logic . My question is that how to differentiate a concept is the domain logic or application logic ? From what I read ,if a concept is communicated by domain experts/users in their jobs , then that concept should be modeled and located in the domain layer . So I have the following questions : (1) I don't think the domain expert will care about how to persist the state of a domain entity , so why repository is located in the domain layer? (2) Most domain expert only care about how the application can help them to do their daily jobs . They care and talk about different use cases and their flow to do that use cases in their daily job . So why the use cases and their flow is encapsulated in the application service which is in the application layer?