We’ve all seen systems that were tightly coupled, and maybe you are working in that kind of system right now. It seems that keeping codebase without high coupling its hard. Because most of the systems ends as not maintainable mess, we just need some time to make it like that. And I want to be clear, I’m not trying blaming any of you because I’ve done the same. But after 60 years from when coupling was invented, I think it’s time to stop chasing the newest technologies and focus on what is causing those p...
Architektura 4 dni, 9 godzin, 42 minuty temu 51 źrodło rozwiń
During the analysis of a certain process, you might end up with just one command that leads only to one event. It has happened to me during our first Process Level sessions. We did find commands to the events that we’ve spotted in the Big Picture session and it felt just right. Is It Really That Simple? There’s a catch though. You might end up with a model of the system that looks just like a CRUD. Is the whole system just a CRUD? Hmm… In most cases probably not. In my case, it was the s...
How to handle concurrency conflicts and enforce invariants using Entity Framework Core and Domain-Driven Design Aggregate Pattern.
Architektura 295 dni, 10 godzin, 57 minut temu 90 źrodło rozwiń
CQRS is a simple pattern that strictly segregates the responsibility of handling command input into an autonomous system from the responsibility of handling side-effect-free query/read access on the same system. If you are familiar with Domain-Driven Design, you’ve most likely heard about, Command-Query Responsibility Segregation (CQRS). Though the CQRS pattern is well-known, there are still a lot of misconceptions around this pattern, especially when it comes to applying it in real-world software proje...
Sztuka programowania 302 dni, 10 godzin, 59 minut temu 95 źrodło rozwiń
Attributes of Clean Domain Model
Sztuka programowania 487 dni, 10 godzin, 6 minut temu 126 źrodło rozwiń
Kolejny odcinek z cyklu o Bounded Contextach - tym razem czym jest ostateczna spójność i dlaczego warto ją stosować przy wykorzystaniu kontekstów.
Sztuka programowania 522 dni, 10 godzin, 59 minut temu 156 źrodło rozwiń
Eric Evans in the book DDD: Tackling Complexity in the Heart of Software presents a model characteristic for Domain Driven Design, which consists of layers: User Interface, Application, Domain and Infrastructure.
Sztuka programowania 523 dni, 10 godzin, 56 minut temu 84 źrodło rozwiń
Domain-Driven Design #06: aggregate and aggregate root
Architektura 551 dni, 11 godzin, 48 minut temu 105 źrodło rozwiń
Polityka to Building Block z DDD, który pozwala otwierać model na rozbudowę w tych miejscach, w których biznes może tego faktycznie potrzebować. Pojedyncze Polityki zwykle są stosunkowo proste, ich kompozycja może jednak modelować bardzo złożone wymagania biznesowe. Jak zaimplementować je w C#, żeby maksymalnie zwiększy czytelność?
Sztuka programowania 605 dni, 10 godzin, 36 minut temu 239 źrodło rozwiń
How to handle Domain Events in complicated cases.
Sztuka programowania 626 dni, 10 godzin, 57 minut temu 133 źrodło rozwiń
Value Object to bardzo użyteczny Building Block z DDD. Jego użycie znacznie zwiększa ekspresywność kodu i redukuje ilość defensywnej logiki. Jak składnia C# wpiera implementację Value Objectów? Których konstrukcji językowych używać, żeby maksymalnie zwiększyć czytelność? Na szczęście C# ma w tym obszarze sporo do zaproponowania, więc kod może być naprawdę elegancki.
Sztuka programowania 631 dni, 11 godzin, 24 minuty temu 335 źrodło rozwiń
W DDD najważniejsze jest oczywiście poznanie naszej domeny, zbudowanie Ubiquitous Language i Modelu wiernie odzwierciedlającego biznes. Na koniec dnia trzeba jednak ubrać to w kod. Ten projekt jest ilustracją różnych podejść do implementacji wzorców znanych z DDD i nie tylko.
Sztuka programowania 638 dni, 11 godzin, 32 minuty temu 197 źrodło rozwiń
Kolejny post z serii o Bounded Contextach - przykład w jaki sposób narzędzia BI potrafią zaburzać pracę kontekstów i jak sobie z nimi radzić. A także nieco o socjotechnicznych aspektach BC 😊
Sztuka programowania 648 dni, 8 godzin, 59 minut temu 96 źrodło rozwiń
Domain-Driven Design #03: bounded context
Architektura 656 dni, 10 godzin, 11 minut temu 204 źrodło rozwiń
Projekty i namespace’y to niedoceniane elementy, które mogą znacząco poprawić czytelność naszego kodu. Warto stosować je w sposób przemyślany, a nie „jakkolwiek, bo to przecież nieistotne”. Kod czyta się co najmniej 10 razy częściej, niż się go modyfikuje. Warto więc zainwestować w jego czytelność i wymusić na poziomie kompilacji tak wiele sprawdzeń jak to tylko możliwe.
Sztuka programowania 666 dni, 11 godzin, 19 minut temu 277 źrodło rozwiń
Domain-Driven Design - "język wszędobylski"
Architektura 691 dni, 11 godzin, 10 minut temu 68 źrodło rozwiń
Czy mikroserwisy to Bounded Contexty? Czy modularyzacja na poziomie architektury systemowej powinna wpływać na sposób wdrożenia? Co tak właściwie chcemy osiągnąć wprowadzając podziały na różnych poziomach architektury?
Architektura 691 dni, 11 godzin, 10 minut temu 141 źrodło rozwiń
Architektura nie musi być kosztowna, trzeba tylko podejść do jej tworzenia w rozsądny sposób. Istotne jest, żeby nie popaść w over-engineering z jednej strony i kompletny chaos z drugiej. Na szczęście są zasady i narzędzia, które mogą nam w tym istotnie pomóc.
Architektura 698 dni, 11 godzin, 45 minut temu 88 źrodło rozwiń
Początek cyklu postów o Domain driven desing.
Architektura 705 dni, 11 godzin, 52 minuty temu 134 źrodło rozwiń
Kolejny post z serii o Bounded Contextach - jak konteksty mają się do architektury zdarzeniowej.
Sztuka programowania 709 dni, 10 godzin, 31 minut temu 128 źrodło rozwiń