Rozwiązywanie problemów ze złożonościami biznesowymi w mikrousłudze z wzorcami DDD i CQRS
Porada
Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET, dostępnej na platformie .NET Docs lub jako bezpłatnego pliku PDF z możliwością pobrania, który można odczytać w trybie offline.
Zaprojektuj model domeny dla każdej mikrousługi lub kontekstu ograniczonego, który odzwierciedla zrozumienie domeny biznesowej.
Ta sekcja koncentruje się na bardziej zaawansowanych mikrousługach implementujących, gdy trzeba radzić sobie ze złożonymi podsystemami lub mikrousługami pochodzącymi z wiedzy ekspertów z dziedziny z ciągle zmieniającymi się regułami biznesowymi. Wzorce architektury używane w tej sekcji są oparte na projektach opartych na domenie (DDD) i podejściach podziału odpowiedzialności zapytań i poleceń (CQRS), jak pokazano na rysunku 7-1.
Różnica między architekturą zewnętrzną: wzorce mikrousług, bramy interfejsu API, odporna komunikacja, pub/sub itp., i architektura wewnętrzna: oparte na danych/CRUD, wzorce DDD, wstrzykiwanie zależności, wiele bibliotek itp.
Rysunek 7–1. Zewnętrzna architektura mikrousług a wzorce architektury wewnętrznej dla każdej mikrousługi
Jednak większość technik mikrousług opartych na danych, takich jak implementowanie usługi internetowego interfejsu API ASP.NET Core lub jak uwidocznić metadane struktury Swagger za pomocą struktury Swashbuckle lub NSwag, mają również zastosowanie do bardziej zaawansowanych mikrousług zaimplementowanych wewnętrznie przy użyciu wzorców DDD. Ta sekcja jest rozszerzeniem poprzednich sekcji, ponieważ większość opisanych wcześniej praktyk ma zastosowanie również tutaj lub dla dowolnego rodzaju mikrousługi.
Ta sekcja zawiera szczegółowe informacje na temat uproszczonych wzorców CQRS używanych w aplikacji referencyjnej eShopOnContainers. Później poznasz techniki DDD, które umożliwiają znalezienie typowych wzorców, które można ponownie użyć w aplikacjach.
DDD to duży temat z bogatym zestawem zasobów do nauki. Możesz zacząć od książek, takich jak Domain-Driven Design eric Evans i dodatkowe materiały od Vaughn Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard i wielu innych ekspertów DDD/CQRS. Ale przede wszystkim musisz spróbować dowiedzieć się, jak zastosować techniki DDD z konwersacji, tablic i modelowania domeny z ekspertami w danej domenie biznesowej.
Dodatkowe zasoby
DDD (projekt oparty na domenie)
Eric Evans. Język domeny
https://domainlanguage.com/Martin Fowler. projekt Domain-Driven
https://martinfowler.com/tags/domain%20driven%20design.htmlJimmy Bogard. Wzmacnianie domeny: podstawy
https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/
Książki DDD
Eric Evans. Domain-Driven Design: Walka ze złożonością w samym sercu oprogramowania
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/Eric Evans. dokumentacja projektu Domain-Driven: definicje i podsumowania wzorców
https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/Vaughn Vernon. Implementowanie projektu Domain-Driven
https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/Vaughn Vernon. projekt Domain-Driven destylowany
https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/Jimmy Nilsson. Stosowanie Domain-Driven projektowania i wzorców
https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/Cesar de la Torre. Przewodnik po architekturze Domain-Oriented n-warstwowej za pomocą platformy .NET
https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/Abel Avram i Floyd Marinescu. szybkie projektowanie Domain-Driven
https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/Scott Millett, Nick Tune — wzorce, zasady i praktyki Domain-Driven Design
https://www.wiley.com/Patterns%2C+Principles%2C+and+Practices+of+Domain+Driven+Design-p-9781118714706
Trenowanie DDD
- Julie Lerman i Steve Smith. podstawy projektowania Domain-Driven
https://bit.ly/PS-DDD