Welcome - everyone is new to one degree or another, so don't worry about mistakes! My wife tells me I make them constantly.
First a caveat, I would consider if DDD applies at all to your application. If a problem domain is trivial or non-complex, or if it is in the computer domain, you might be better off writing simple procedural code or another alternative.
My answer? Represent your element of human interaction (e.g. a window, report) as an object. Have it call a method on an object in your domain model. What, no 10+ tiers, frameworks, patterns and technologies? :)
DDD at heart is about representing a real-world system or problem as an object domain model, and then the representation of that model in working code.
There is no presumption that such a system would have any human interaction, or any external system interaction.
In some ways, this represents a different way of thinking from a Microsoft data-centric-binding point of view. Their "tools" driven approach has always had a "domain model" alternative, but it's much more prevalent in solutions involving complex domains in Java.
When I say domain model - that is NOT a bunch of data, encapsulated as objects (or "aggregates"), manipulated by some procedural "controller" or "manager", in a (too) complex layered technical solution.
>>> "I decided just design viewmodels that holds data the UI can be bound to. Loading that data was not a problem due I introduced an application controller, which can consume repositories and infrastructure services to load data out of a datastore, which in my case is a relational database, but is encapsulated by the repository pattern."
You have no domain model.
Hopefully, this at least gives some food for thought. Let me know if I can help.
Best regards, Aryeh
First a caveat, I would consider if DDD applies at all to your application. If a problem domain is trivial or non-complex, or if it is in the computer domain, you might be better off writing simple procedural code or another alternative.
In some ways, this represents a different way of thinking from a Microsoft data-centric-binding point of view. Their "tools" driven approach has always had a "domain model" alternative, but it's much more prevalent in solutions involving complex domains in Java.
When I say domain model - that is NOT a bunch of data, encapsulated as objects (or "aggregates"), manipulated by some procedural "controller" or "manager", in a (too) complex layered technical solution.
My answer? Represent your element of human interaction (e.g. a window, report) as an object. Have it call a method on an object in your domain model. What, no 10+ tiers, frameworks, patterns and technologies? :)
Domain Driven Design is appropriate if you have determined that an object domain model can best represent the problem under consideration. That architectural choice can depend on many things, but primary is the complexity of the problem domain itself. Other non-functional requirements will influence that choice.
>>> "On my currently point of view I always have to thing do the DDD approach, if there is a real business in background of my software."
I would disagree, depending on the complexity of the domain, non-functional requirements and commercial constraints, I might choose or suggest an alternative.
>>> "For a short time, let's say i am not the software architect, I am the domain expert."
That's great, it makes it easier to have one common model understood by both. That is what ubiquitous language is about. It's not about producing a glossary of terms.
>>> "Some parts of DDD does not match here, ..."
I don't understand this part.
>>> "Okay I heard about data-centric applications that will not pass through DDD in a session"
Also not sure I understand this.
>>> "So my question here is: Is there any application that is independend from any UI layer? I think there is no example in the real world."
Certainly, one can have an application with no UI. It is quite common to have an application with only a programmatic interface. In an age of (micro)services and api based UI's, its quite common?
>>> "Here is my questions: Is there any ambivalence between DDD and Data Binding, especially using Patterns like MVVM?"
I think you probably mean conflict rather than ambivalence? In that case, the answer is no.
... "The goal of domain-driven design is to create better software by focusing on a model of the domain rather than technology.", Eric Evans, Domain Driven Design p148 (emphasis mine)
Best Regards, Aryeh
...