Domain-Driven Design dla .NET Core. Jak rozwiązywać złożone problemy podczas projektowania architektury aplikacji - Helion
Tytuł oryginału: Hands-On Domain-Driven Design with .NET Core: Tackling complexity in the heart of software by putting DDD principles into practice
TÅ‚umaczenie: Lech Lachowski
ISBN: 978-83-283-7765-3
stron: 424, Format: 168x237, okładka: miękka
Data wydania: 2021-07-19
Księgarnia: Helion
Cena książki: 99,00 zł
Wdrożenie zasad projektowania dziedzinowego (DDD) jest szansÄ… na uzyskanie doskonaÅ‚ych wyników projektowania oprogramowania dla zÅ‚ożonych wymagaÅ„ biznesowych. Aby podejÅ›cie DDD ujawniÅ‚o swoje zalety, konieczne jest zrozumienie potrzeb użytkowników i zidentyfikowanie wÅ‚aÅ›ciwych problemów do rozwiÄ…zania. Dopiero potem można przystÄ…pić do budowania modeli. Zaangażowanie zainteresowanych stron biznesowych w ten proces nie zawsze jednak przebiega efektywnie. Konieczne jest zrozumienie natury modeli dziedzinowych opartych na zachowaniu oraz tego, jakÄ… rolÄ™ odgrywajÄ… one w budowie zwinnych i zmodularyzowanych systemów.
DziÄ™ki tej książce zrozumiesz praktyczne znaczenie zÅ‚ożonoÅ›ci dziedziny i behawioralnych aspektów jÄ™zyka dziedzinowego. Poznasz podstawowe zasady DDD i nauczysz siÄ™ używać takich narzÄ™dzi jak EventStorming, Event Sourcing i CQRS. Dowiesz siÄ™, jak stosuje siÄ™ DDD do różnych stylów architektonicznych, takich jak REST, systemy reaktywne i mikrousÅ‚ugi. Nauczysz siÄ™ pracować we frameworku .NET Core 2.2, aby przetÅ‚umaczyć modele dziedzinowe na wykonywalny kod C#, oraz Vue.js, aby zbudować frontend aplikacji. Nie zabrakÅ‚o tutaj również zagadnieÅ„ refaktoryzacji kodu, numerowania wersji zdarzeÅ„ i migracji. W rezultacie poszczególne zespoÅ‚y w organizacji bÄ™dÄ… mogÅ‚y pracować elastyczniej i efektywniej dziÄ™ki ulepszonym usÅ‚ugom i oddzielonym interakcjom.
W książce między innymi:
- angażowanie interesariuszy biznesowych do rozwiązywania złożoności dziedziny
- koncepcja kontekstu ograniczonego i agregatu
- projektowanie modeli tymczasowych na podstawie zachowania
- wzorzec CQRS i modele odczytu wykorzystujÄ…ce rzutowania
- jednokierunkowy przepływ interfejsu użytkownika w Vue.js
- praktyczne stosowanie zasad projektowania dziedzinowego
Programowanie dziedzinowe: tak siÄ™ trafia w sedno potrzeb!
Osoby które kupowały "Domain-Driven Design dla .NET Core. Jak rozwiązywać złożone problemy podczas projektowania architektury aplikacji", wybierały także:
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
- ASP.NET Core 6. Kurs video. Rozwijaj aplikacje webowe z Entity Framework Core 179,00 zł, (71,60 zł -60%)
- Testowanie automatyczne w .NET. Kurs video. Zastosowania frameworka nUnit 169,00 zł, (76,05 zł -55%)
- Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy 69,00 zł, (31,05 zł -55%)
- Technologia LINQ. Kurs video. Warsztat pracy z danymi z różnych źródeł 59,00 zł, (26,55 zł -55%)
Spis treści
Domain-Driven Design dla .NET Core. Jak rozwiązywać złożone problemy podczas projektowania architektury aplikacji -- spis treści
O autorze 11
O recenzentach 13
Przedmowa 15
Rozdział 1. Dlaczego projektowanie dziedzinowe? 19
- Zrozumieć problem 20
- Przestrzeń problemu i przestrzeń rozwiązania 20
- Co poszło nie tak z wymaganiami? 22
- Jak radzić sobie ze złożonością? 23
- Rodzaje złożoności 23
- Klasyfikowanie złożoności 26
- Podejmowanie decyzji i błędy poznawcze 29
- Wiedza 32
- Wiedza dziedzinowa 32
- Unikanie ignorancji 34
- Podsumowanie 36
- Dalsza lektura 36
Rozdział 2. Język i kontekst 37
- Język wszechobecny 37
- Język dziedzinowy 38
- Wyraźne określanie rzeczy dorozumianych 41
- Język i kontekst 47
- Podsumowanie 51
Rozdział 3. EventStorming 53
- EventStorming 54
- Język modelowania 55
- Wizualizacja 57
- Porady dotyczÄ…ce organizowania warsztatów EventStorming 58
- Kogo zaprosić? 58
- Przygotowanie przestrzeni 59
- Warsztaty 61
- Nasz pierwszy model 68
- Podsumowanie 73
- Dalsza lektura 74
Rozdział 4. Projektowanie modelu 75
- Model dziedziny 75
- Co reprezentuje model? 76
- Anemiczny model dziedziny 77
- Co należy uwzględnić w modelu dziedziny? 78
- EventStorming na poziomie projektu 82
- Poszerzanie wiedzy 82
- Przygotowanie do warsztatów 83
- Notacja rozszerzona 83
- Modelowanie dziedziny referencyjnej 88
- Podsumowanie 91
- Dalsza lektura 92
Rozdział 5. Implementacja modelu 93
- Wymagania techniczne 93
- Rozpoczęcie implementacji 94
- Tworzenie projektów 94
- Framework 95
- Przełożenie modelu na kod 96
- Encje 97
- Dodawanie zachowania 100
- Zapewnianie poprawności 101
- Ograniczenia dla wartości wejściowych 102
- Obiekty wartości 103
- Zdarzenia dziedzinowe w kodzie 127
- Zdarzenia dziedzinowe jako obiekty 128
- Generowanie zdarzeń 131
- Zdarzenia zmieniajÄ… stan 134
- Podsumowanie 139
Rozdział 6. Działanie za pomocą poleceń 141
- Wymagania techniczne 141
- Otoczenie modelu dziedziny 142
- Udostępnianie internetowego interfejsu API 142
- Warstwa aplikacji 149
- Obsługa poleceń 152
- Wzorzec procedury obsługi poleceń 152
- Usługa aplikacji 156
- Podsumowanie 165
RozdziaÅ‚ 7. Granica spójnoÅ›ci 167
- Wymagania techniczne 167
- Spójność modelu dziedziny 168
- Granice transakcji 168
- Wzorzec Agregat 173
- Ochrona niezmienników 181
- Analiza ograniczeń dla polecenia 182
- Egzekwowanie reguł 189
- Encje wewnÄ…trz agregatu 192
- Podsumowanie 201
RozdziaÅ‚ 8. Utrwalanie agregatów 203
- Wymagania techniczne 203
- Utrwalanie agregatów 204
- Repozytorium i jednostki pracy 204
- Implementacja dla RavenDB 206
- Implementacja Entity Framework Core 221
- Podsumowanie 232
Rozdział 9. CQRS - strona odczytu 233
- Wymagania techniczne 234
- Dodawanie profilów użytkowników 234
- Zagadnienia dotyczące dziedziny profilu użytkownika 235
- Strona aplikacji dla profilu użytkownika 242
- Strona zapytań 250
- CQRS i konflikt między odczytami a zapisami 250
- Zapytania i modele odczytu 252
- Implementowanie zapytań 254
- API zapytań 254
- Implementacja zapytań dla RavenDB 257
- Implementacja zapytań dla frameworku encji 264
- Podsumowanie 270
Rozdział 10. Event Sourcing 271
- Wymagania techniczne 272
- Dlaczego Event Sourcing 273
- Problemy z utrwalaniem stanu 273
- Czym jest Event Sourcing? 277
- Event Sourcing wokóÅ‚ nas 278
- Agregaty pozyskiwane ze zdarzeń 279
- Strumienie zdarzeń 279
- Magazyny zdarzeń 281
- Utrwalanie oparte na zdarzeniach 283
- Podsumowanie 299
- Dalsza lektura 300
Rozdział 11. Rzutowania i kwerendy 303
- Zdarzenia i zapytania 304
- Budowanie modeli odczytu na podstawie zdarzeń 305
- Rzutowania 306
- Subskrypcje 308
- Implementacja rzutowań 311
- Subskrypcje nadganiajÄ…ce 311
- Rzutowania międzyagregatowe 320
- Rzutowanie zdarzeÅ„ z dwóch agregatów 321
- Wzbogacanie modeli odczytu 331
- Kwerendowanie w rzutowaniach 332
- Konwertowanie zdarzeń 335
- Magazyn trwały 340
- Punkty kontrolne 340
- Utrwalanie modeli odczytu 344
- Zakończenie 349
- Podsumowanie 353
Rozdział 12. Kontekst ograniczony 355
- Pułapka pojedynczego modelu 356
- Zaczynaj od rzeczy małych 356
- Znowu złożoność 357
- Wielka kula błota 359
- Konstruowanie systemów 363
- Granice językowe 364
- Autonomia zespołu 369
- Podsumowanie 373
Rozdział 13. Podział systemu 375
- Kiedy, co i jak? 375
- Kiedy dzielić? 376
- Co dzielić? 378
- Jak podzielić? 380
- Różne spojrzenia na projektowanie systemów 382
- Proces projektowania 383
- Dzielenie encji 387
- Budowa systemu modułowego 387
- Moduły wewnątrz jednego rozwiązania 389
- Struktura modułu 392
- Budowanie systemu 403
- PodÅ‚Ä…czanie moduÅ‚ów do aplikacji 404
- Integracja 405
- Interfejs użytkownika 412
- Interfejs użytkownika ponad granicami 413
- Mikrousługi 417
- Kiedy nie stosować systemów rozproszonych 418
- Jak stosować systemy rozproszone 419
- Podsumowanie 422
- Dalsza lektura 423