Czy są zmiany w AD Domain Services Windows 2012 Andrzej Kokociński [email protected].
Domain-Driven Design workshops
-
Upload
mariusz-kopylec -
Category
Engineering
-
view
143 -
download
2
Transcript of Domain-Driven Design workshops
Domain-Driven DesignJak stworzyć aplikację używając DDD
Mariusz Kopylec
Domena
Dziedzina, w obrębie której budowane jest rozwiązanie zadanego problemu.
Domena
Problem
• Operacje arytmetyczne
• Implementacja aplikacji Java
• Projektowanie aplikacji
Domena
• Liczby rzeczywiste
• JDK
• „Wspólny język”
Domena: wspólny język
• Role: ekspert domenowy, programista
• Ustalony słownik pojęć
• Narzędzie do opisu działania aplikacji
Domena: wspólny język
Usługa ma generować tokeny, które mają być ważne przez określony czas.
Token można wygenerować z domyślnym lub podanym czasem życia.
Usługa powinna udostępniać możliwość walidowania tokenów oraz ich odwoływania.
Odwołany token jest nieważny.
Nie można odwołać tego samego tokena wiele razy.
Domena
Reprezentacją domeny w kodzie źródłowym jest model.
Architektura
INTERFEJS UŻYTKOWNIKA
LOGIKA APLIKACJI
MODEL
INFR
AST
RU
KTU
RA
Interfejs użytkownika
Odpowiedzialny za interakcje z użytkownikiem.
Interfejs użytkownika
• Graficzny interfejs użytkownika
• Strona internetowa
Logika aplikacji
Definiuje funkcjonalności (przypadki użycia).
Logika aplikacji
• Serwis aplikacyjny
• Kontrakt z serwisem infrastrukturalnym
Serwis aplikacyjny
• Metoda = przypadek użycia
• Operuje na modelu
• Bezstanowy
Kontrakt z serwisem infrastrukturalnym
• Definiuje funkcjonalności pomocnicze
• Interfejs
Model
Klocki, z których budujemy funkcjonalności.
Składa się z Domain Building Blocks.
Model
• Agregat: encja, value object
• Serwis domenowy
• Fabryka
• Repozytorium
• Zdarzenie domenowe
• Polityka
Agregat
• Podstawowa jednostka operacyjna
• Powiązane encje i value objecty
• Jeden punkt wejściowy – korzeń
• Zawsze w prawidłowym stanie
Agregat: encja
• Unikalne ID
• Mutowalna
• Nieanemiczna
Agregat: value object
• Brak unikalnego pola
• Niemutowalny
• Typ złożony
Serwis domenowy
• Zachowanie logicznie nie pasujące do żadnej encji
• Proces wywodzący się ze „wspólnego języka”
• Bezstanowy
• Może być interfejsem
Fabryka
• Tworzy agregaty
• Ogranicza sposoby tworzenia agregatu
• Wyciąga złożoną logikę z konstruktorów
Repozytorium
• Zarządza utrwalaniem agregatów
• Interfejs
Zdarzenie domenowe
• Oddziela model od innych warstw
• Konsumowane w innych warstwach
Polityka
• Odzwierciedla wykonanie jednej operacji na kilka sposobów
• Wzorzec projektowy: Strategia
Infrastruktura
Warstwa pomocnicza dla pozostałych warstw.
Infrastruktura
• Serwis infrastrukturalny
• Implementacja repozytorium
Serwis infrastrukturalny
• Spełnia kontrakt zdefiniowany w innych warstwach
• Bezstanowy
Implementacja repozytorium
• Spełnia kontrakt zdefiniowany przez repozytorium
• Określa sposób utrwalania agregatów
• Bezstanowa
Zasady pisania kodu
• Brak łączonych metod na agregacie
• Warunki w osobnych metodach
• „Fail fast”
• Dobrze nazwane klasy i metody
• Dostępność ograniczona do minimum
Zapamiętaj!
Agregat != Tabela