Ddd is much more than this! We're re talking about complex apps ..., All their business rules (domain logic) are points that, in most of the cases, need to be changed quite a lot during the app's life. so it is critical to be able to change the app and test it in an easy way and independently from infrastructure areas (technology, data stores, data access using lgies, orms, etc .). because of that, it is important to have the domain/business layer (domain logic, entities, etc .) decoupled from the other layers. Having said so, in our opinion, the best actual neural tural style that fits with those requirements isDomain oriented N-layered architecture Which Is Part Of DDD (Domain Driven Design) . And This sample-app is showing a way to implement a domain oriented N-layered architecture . But, and this is extremely important, DDD is on the other hand, much more than just a proposed architecture and patterns. ddd is a way to build apps, a way for the team, to work in projects. According to DDD, the project's team shocould work in a specific way, shocould have direct communication with the domain experts (the customer, in our cases). The team shocould use 'Ubiquitous language' Which has to be the same language/terms used by the domain experts, etc.But, all those ways to work are not part of this sample-app , Because it is process, kind of Alm, so, If you want to really "Do DDD" , You'll need to read Eric-Evans 'book or any other DDD book where they talk about the DDD process, about the project and the team, not just the architecture and patterns. architecture and patterns are just a small part of DDD, but, in this case those are the points we are showing here (DDD architecture and patterns ). But we want to highlight that DDD is much more than architecture and design patterns . Ddd-not just these We are discussing complex application systems ......, With the business rules (domain logic) of these application systems, we can understand that in most cases, the business rules are a variable part of the entire lifecycle of the application system. Therefore, it is easy to change and test application systems and make them independent from infrastructure (such as technology, data storage, data access technology, Orm, etc ), it is very important. Because of this, it is necessary for us to decouple the domain/business layer (domain logic, entity, etc.) from other layers. Even so, according to our suggestions, the architecture style that can meet the above requirements is a domain-Oriented Multi-layer architecture, but it is only a part of the domain-driven design (DDD. This case shows how to implement a domain-Oriented Multi-layer architecture. However, it is important to note that DDD is not only an architecture + mode. Ddd is used to develop applications.ProgramIs a way for a team to work in a project. According to DDD, the project team needs to cooperate in a special way and should be able to communicate directly with field experts (usually customers. The entire team needs to use the "general language", a language that everyone can accept, and so on. However, this case does not contain this content because it is a "process" or an ALM. Therefore, if you really want to practice DDD in 100%, you need to read the book "Domain-driven design-how to deal with core software complexity" written by Eric Evans, or other books that discuss the DDD process will give a detailed introduction to the DDD process, project, and team, not just about the architecture and model. Architecture and pattern are only a small part of DDD, and what we show here is exactly this part. In short, we must emphasize that DDD is not just an architecture + model. |