Application Events vs Domain Events
Bardzo szybko przywykłem do idei "
domain events" Udiego i nie spodziewałem się napotkania w kodzie
DDDSample innego rozwiązania. Jakież było więc moje zdziwienie, gdy zdarzenia (z natury) domenowe odnalazłem nie na poziomie modelu domeny, ale na poziomie
warstwy aplikacyjnej. Postanowiłem przejrzeć się bliżej temu tematowi (zamiast na ślepo kopiować Javowe rozwiązanie).
Wnioski mam dwa. Po pierwsze drobnoziarnista struktura pakietów Javy sprawia, że warstwa aplikacji jest wolna od kodu związanego z UI lub komunikatami (tym zajmuje się osobna
warstwa fasady), więc umieszczanie tam zdarzeń nie jest dużym naruszeniem enkapsulacji logiki domenowej. Co innego w .NET, kiedy zwykle obie odpowiedzialności -- logiki i jej fasady -- realizowane są przez jedno assembly (i być może nawet jedną klasę).
Po drugie, umieszczenie zdarzeń na poziomie warstwy aplikacji zapobiega konfliktowi nazw "domain event"-ów Udiego ze zdarzeniami-elementami modelu domeny (niemodyfikowalnymi encjami).
Ostatecznie postanowiłem zmodyfikować nieco oryginalny projekt, aby móc użyć koncepcji "domain event" w DDDSample.Net.
Więcej na ten temat możecie poczytać na
dddsamplenet.blogspot.com (po angielsku).