Hej mam w zasadzie dwa pytania dotyczące tworzenia nowych obiektów (w nomenklaturze DDD agregatów).
-
Wiem, że agregaty powinny być projektowane jak najmniejsze i powinny być granicą dla niezmienników i modeluję one raczej pewien kontekst biznesowy aniżeli strukturę danych. Oznacza to, że zamiast Usera mamy wydzielone coś w stylu Contact, Seller, Buyer i co tam kto ma jakie domeny. Ale co z tworzeniem nowego .. no właśnie, np Usera? Jeśli mamy formatkę na froncie i podajemy tam wszystkie dane - kontaktowe, dotyczące wysyłki oraz dotyczące jeszcze innych domen - założmy z 50 różnnych pól? Gdzie wtedy taką logikę się wkłada. Tutaj w zasadzie nie operujemy na agregatach, bo my żadnego z repo nie pobieramy, więc nie ma tu pojęcia bronienia niezmienników. Pod to robi się osobny pakiet?
-
Przy tworzeniu nowego obiektu jak w pkt 1 często trzeba wykonać jakieś walidacje i poodpytywać inne moduły czy to wewnątrz jednego mikroserwisu czy inne mikroserwisy o pewne rzeczy. Wykorzystując dobre praktyki mam pewien podział modułów i wystawiam publicznie albo fasady, które udostępniają pewną logikę biznesową, albo query servicy, które zwracają dane potrzebne na front i w tych drugich jest zwykła prosta dwuwarstwowa logika. Czy z purystycznego punktu widzenia podczas tworzenia nowego obiektu powinienem tylko komunikować się z innymi fasadami czy dopuszczalne jest komunikowanie się z query servicami, jeśli akurat zwracają mi one to co potrzebuję?