Dzisiaj czas na kolejny wpis poświęcony wzorcom kreacyjnym, a konkretnie na omówienie wzorca projektowego Builder. Builder jest wzorcem, który dzieli implementację obiektu na etapy.
Architektura 2280 dni, 9 godzin, 54 minuty temu 105 źrodło rozwiń
Kolejny post z serii o Bounded Contextach - jakie problemy niesie brak kontekstów w aplikacji. I dlaczego produkt w jednym dziale nie będzie tym samym produktem w drugim dziale 😉
Sztuka programowania 2285 dni, 9 godzin, 46 minut temu 102 źrodło rozwiń
Na każdym etapie swojej kariery programista patrzy na interfejsy zupełnie inaczej. Programista rozpoczynający przygodę z programowaniem nawet jeśli zrozumie technikę działania interfejsów, to prawdopodobnie w perspektywie całej architektury aplikacji nie będzie do końca przekonany o sensie ich używania. Starszy programista z kolei dostrzeże wiele ich zalet, a wręcz konieczność ich stosowania..
Sztuka programowania 2311 dni, 9 godzin, 12 minut temu 242 źrodło rozwiń
Kolejny post z serii o Bounded Contextach - język i jego wpływ na tworzone konteksty. Nieco o Ubitiquous Language i psychologii 😉
Sztuka programowania 2314 dni, 9 godzin, 51 minut temu 93 źrodło rozwiń
Rozpoczynam kolejny cykl - tym razem o Bounded Contextach. Zobacz czym są konteksty i jak mogą pomóc twojej aplikacji.
Sztuka programowania 2347 dni, 9 godzin, 38 minut temu 136 źrodło rozwiń
W tym wpisie, kolejnym z serii dotyczącej kreacyjnych wzorców projektowych, omówię wzorzec projektowy Prototype – Prototyp. Prototyp, zgodnie z intuicją, ma za zadanie dostarczyć jakiś pierwotny obiekt, który potem wykorzystamy do konkretnych celów. Tym celem będzie tworzenie obiektów interesujących klienta.
Architektura 2359 dni, 9 godzin, 54 minuty temu 99 źrodło rozwiń
Wprowadzenie Dzisiaj przedstawię Wam temat wzorców projektowych, a głównie pierwszy wzorzec projektowy, który wybrałem jakim jest Metoda fabryczna – Factory Method. Powiem, czemu je stosować, jakie istnieją rodzaje wzorców projektowych, jakie istnieją poszczególne wzorce projektowe, a na samym końcu wpisu zamieszczę przykładową implementację danego wzorca w języku C#. Wzorzec projektowy jest pewnym schematem, ogólnym rozwiązaniem pewnego problemu, na podstawie którego powstaje potem konkretna implementa...
Architektura 2361 dni, 9 godzin, 42 minuty temu 131 źrodło rozwiń
I finished work on my presentation about “Domain Driven Design – Facts / Myths / Microservices”. Check my slides and recommended articles / videos.
Sztuka programowania 2430 dni, 8 godzin, 40 minut temu 116 źrodło rozwiń
Persystencja zawsze budzi wiele emocji i skrajnych opinii. W tym artykule pokażemy, jakie opcje są do wyboru przy persystowaniu agregatów z DDD i jak pragmatycznie do nich podejść. Przejdziemy kolejno przez bezpośredni zapis agregatów, robienie Snapshotów, tworzenie osobnego modelu danych na podstawie zdarzeń, a na koniec dotrzemy do Event Sourcingu.
Sztuka programowania 2487 dni, 9 godzin, 44 minuty temu 283 źrodło rozwiń
Własna tożsamość to główny wyróżnik Encji w DDD. Jest ona wyrażana przez Id obiektu, którym w praktyce najczęściej okazuje się … int z bazy danych. Nie jest to najlepsze rozwiązanie, skoro w DDD chodzi o modelowanie biznesu. Postaram się przedstawić alternatywne podejście i jego implementację, która pozwala w możliwie bezbolesny sposób wprowadzić biznesowe identyfikatory do naszych encji.
Sztuka programowania 2530 dni, 11 godzin, 7 minut temu 228 źrodło rozwiń
Do budowy Modelu Dziedziny (ang. Domain Model), wykorzystujemy kilka bazowych składowych powiązanych ze sobą relacjami.Asocjacje (ang. associations) Asocjacja to swoista abstrakcja stanowiąca o związku pomiędzy bytami wchodzącymi w skład Modelu Dziedziny (ang. Domain Model), jaką twórca uznał za odpowiednią. O czym należy pamiętać tworząc asocjacje:elim...
Architektura 2674 dni, 11 godzin, 9 minut temu 235 źrodło rozwiń
Poprawne modelowanie dziedziny skutkuje bezwzględnym wymaganiem dotyczą jej izolacji od reszty systemu. Z pomocą przychodzi architektura warstwowa wyodrębniająca z aplikacji spójne ze sobą pod względem działania obszary. Zebrane w ten sposób funkcjonalności są składowymi warstw. Przy czym bazowy zestaw warstw został zdefiniowany i zawiera:Interfejsu Użytkow...
Architektura 2697 dni, 18 godzin, 18 minut temu 249 źrodło rozwiń
Odwiecznym problemem jaki napotykają na swojej drodze dwie ścierające się siły: zlecający i wykonawca, jest wzajemna komunikacji i zrozumienie. Problem narasta gdy obie persony obracają się w odseparowanych środowiskach. Przykładem takiej sytuacji jest klient (Ekspert Domenowy, eng. Domain Expert) definiujący wymagania aplikacji i wykonawca (np.: zespół p...
Architektura 2704 dni, 20 godzin, 50 minut temu 208 źrodło rozwiń
Niniejszym otwieram cykl postów związanych z rozkminianiem architektury wytwarzania oprogramowania o nazwie DDD => Domain-Driven Desing. Jest to temat jaki od pewnego czasu dręczy mnie, i chcę rozwinąć swoje zdolności w tym konkretnym obszarze. W tym celu zaopatrzyłem się w dwie pozycje:Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym....
Architektura 2708 dni, 11 godzin temu 309 źrodło rozwiń
A więc dalej modelujesz swoją domenę. Który agregat powinien odpowiadać za obsłużenie danego zdarzenia? Do którego agregatu przynależy dane zdarzenie? Zapraszam do lektury
Architektura 2780 dni, 9 godzin, 12 minut temu 42 źrodło rozwiń
A więc modelujesz swoją domenę. W Twoim modelu masz agregat, który okresowo jest niezwykle obciążany przez użytkowników systemu. W jaki sposób do tego nie dopuścić? Jak przearanżować model tak, aby łatwiej obsługiwał takie sytuacje? Zapraszam do lektury #TopDomainModel
Architektura 2785 dni, 21 godzin, 24 minuty temu 101 źrodło rozwiń
Od pewnego czasu chodził mi głowie pomysł by napisać coś o DDD. Tak się złożyło, ze u mnie w firmie powstaje element systemu o nazwie Audit, który będzie służył do zarządzania (planowanie, wykonanie, raportowanie) audytami. Zdecydowałem się pokazać na blogu jak napisać taki system w oparciu o reguły DDD (głównie ze względu na to, że w obecnym projekcie nie korzystamy z DDD). Aby urealnić cały proces, wymagania które będziemy implementować będą pochodzić z rzeczywistej domeny. Oczywiście będzie ...
Architektura 2982 dni, 6 godzin, 16 minut temu 261 źrodło rozwiń
Last time I wrote a post about the commands. Events are quite similar to the commands – the main difference between these 2 patterns is that the events are related to the things that have actually happened to our entity e.g. by invoking the command. They’re also a core part of the DDD (Domain Driven Desing) and can be easily implemented within our software solution.
Sztuka programowania 3055 dni, 3 godziny, 15 minut temu 169 źrodło rozwiń
Dziś podzielę się z Tobą ciekawą listą materiałów o DDD, czyli Domain Driven Design. Jest to podejście do tworzenia oprogramowania przydatne wtedy, kiedy domena nad którą pracujemy jest skomplikowana. Jednocześnie nie zalecane do trywialnych części aplikacji w stylu „encje na twarz i pchasz” czyli typu CRUD. Ułatwia pracę z kodem jak i… klientem :-). Temat, którym na pewno warto się zainteresować.
Architektura 3127 dni, 4 godziny, 19 minut temu 681 źrodło rozwiń
TL;DR 1. Define events in the system Define sources (commands, process managers) and actors Group commands around aggregates Implement… Post-it, long piece of paper and people…Let’s play Generally speaking „event storming” is about extracting domain from events which describe it. In most of the complex domains there are events that represent important changes in the state of our domain, simply begin with them. We’ll need the following things:Unlimited modelling space – sounds impossibl...
Architektura 3545 dni, 9 godzin, 34 minuty temu 197 źrodło rozwiń