Podejmij te liczby po prostu jako pewne wartości oparte na doświadczeniu autora (książka Evansa została wydana ponad 13 lat temu, od tego czasu sytuacja się zmieniła).
Przede wszystkim rzeczą, którą (niestety) niewielu programistów rozumie, jest to, że DDD dotyczy sposobu myślenia, sposobu patrzenia na rzeczy. to jest to! Możesz więc użyć DDD w każdym projekcie, ponieważ wciąż musimy najpierw zrozumieć domenę, niezależnie od jej implementacji. Jeśli się okaże, że domena to tylko kilka struktur danych, nie musisz komplikować życia. Zwłaszcza jeśli budujesz "głupią" aplikację, czyli interfejs dla bazy danych.
Ale jeśli budujesz aplikację, która musi zrozumieć semantykę biznesową (koncepcje i zachowanie) w celu zautomatyzowania rzeczy, to jest to inna historia, a wszystkie te pojęcia DDD pomogą ci zbudować łatwiejszą w utrzymaniu aplikację.
Wszystko zależy od aplikacji i nawet w tej aplikacji rzeczy mogą się bardzo różnić. Powinieneś najpierw zrozumieć cel aplikacji, następnie domenę, którą próbuje reprezentować (jeśli tak jest) i wymyślić rozwiązanie dla każdego przypadku użycia. W jednej aplikacji możesz mieć wiele rzeczy związanych z CRUD i możesz być bardzo wydajny, pomijając wiele abstrakcji. Możesz mieć kilka ważnych pojęć i przypadków użycia, które wymagają znacznie lepszego zrozumienia i zaprojektowania. Ma również znaczenie, jak bardzo uważasz, że aplikacja zmieni się z czasem. Jeśli istnieją oznaki, które będą ewoluować w miarę upływu czasu, lepiej będzie trochę abstrakcjonować, ale tylko z punktu widzenia projektu. Wdrożenie wciąż może być CRUDy w tym momencie.
Jeśli traktujesz metodologię jako grupę myślenia i pojęć, możesz użyć jej wszędzie, ponieważ coś takiego jak DDD nie jest receptą na "jak to zrobić". Chociaż ma kilka konkretnych narzędzi, projektant aplikacji powinien zdecydować, czy są one dobre dla Twojej aplikacji.
Po prostu musisz użyć DDD, aby zdecydować, czy (całość) DDD może być użyta w niektórych częściach aplikacji. Ale znowu DDD oznacza podejście strategiczne, sposób myślenia.
Po prostu nie można wybrać rozwiązania od samego początku dla całej aplikacji.Zapoznaj się z problemami, które aplikacja stara się rozwiązać i użyj właściwego rozwiązania dla każdego problemu. Jeśli w końcu wszystko jest po prostu CRUD, to jest w porządku. Równie dobrze, jeśli tylko niektóre części są zaimplementowane za pomocą narzędzi taktycznych DDD, chodzi o to, aby znaleźć optymalne rozwiązanie problemu.
Podsumowując, poznaj i zrozum nasz sposób myślenia DDD (istnieje wiele wyjaśnień, skup się na projekcie, a nie na przepisach, ponieważ są one błędne), unikaj traktowania tego jako przepisu kodującego i po prostu go używaj, aby określić najlepsze podejście do potrzeb aplikacji.
Czy możesz podać odniesienia do tych odniesień? – StuartLC
Aby uzyskać mniejszą liczbę opinii, powinieneś oświadczyć, kiedy uważasz, że DDD powinno być używane * gdzieś *, że te cytaty się obniżają. DDD to narzędzie używane w przypadkach, w których jest użyteczne. 95% oprogramowania również nie potrzebuje czegoś takiego jak baza danych NoSQL do obsługi ogromnych ilości danych. Dlaczego chcesz wziąć na siebie koszty, bez żadnych korzyści? –
Drogi StuartLC Przeczytałem je w tym dokumencie na stronie 22, w dziale "Aplikacje do centrowania danych". http://hirschmann.indeca.de/de-DE/Info-Center/News/~/media/Domven_Driven_Design_-_Step_by_Step.ashx –