Przechwytywanie wyjątków z warstwy domeny

Odpowiedz Nowy wątek
2019-08-12 11:43
0

W jaki sposób przechwytujecie wyjątki lecące z warstwy domeny w warstwie aplikacji? Robicie coś w stylu var operationResult = Try(() => aggregateRoot.DoSth()), gdzie Try jest jakimś helperem mapującym wyjątki z domeny na obiekty rezultatu?

Pozostało 580 znaków

2019-08-12 13:29
0

Czyli że robić coś takiego? encja serwis Tj. nie zwracać żadnego Result?

edytowany 1x, ostatnio: nobody01, 2019-08-12 13:33

Pozostało 580 znaków

2019-08-12 13:40
1

Ja tak samo jak Neves- używasz globalnego łapania wyjątków i robisz z nimi co trzeba. To może zależeć od konkretnego wyjątku jeśli istnieje taka potrzeba.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
edytowany 1x, ostatnio: Aventus, 2019-08-12 13:41

Pozostało 580 znaków

2019-08-12 14:00
1

Nie używam DDD. Problem solved. :P

Ale nawet w CRUDzie albo w normalnych projektach zwracał bym wynik zamiast rzucać wyjątki.
Globalna obsługa errorów poprzez filtr/handler, to jeszcze inna para kaloszy, i jak dla mnie obowiązkowa, niezależnie od tego, do czego projekt służy i jakich wzorców używa.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-08-12 14:12
0

@somekind: Hmm, pisałeś ostatnio, że rozwijasz dwuletni projekt, w którym nie ma co szukać bugów. Wątpię, że masz anemiczny model. Jednocześnie piszesz, że nie używasz DDD. Wiem, że są to ortogonalne pojęcia, ale jednak ciekaw jestem, jak ten model u Ciebie wygląda w projekcie.

Pozostało 580 znaków

2019-08-12 14:26
1

Jeśli chodzi o ten projekt, to nie powiedziałbym, że tam w ogóle jest jakiś model dziedziny. Ten projekt to integracja, czyli odbiera dane z jednych serwisów, czasami połączy kilka źródeł w jedno, a czasami tylko zmapuje 1:1, i odsyła do jakichś zewnętrznych konsumentów. Jedyna logika jaka tam jest, to albo autoryzacyjna, albo "nie wywołuj drugiego serwisu, jeśli pierwszy niczego nie zwrócił". Robienie tego w DDD byłoby mocnym overkillem. Tam jest dużo DTO, bardzo dużo DTO, a jakieś serwisy operują na nich bezpośrednio, więc jeśli na siłę chcieć to jakoś otagować, to jest to raczej ADM niż cokolwiek innego.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-08-12 14:27
0

@somekind: Zdarzyło Ci się kiedyś mieć RDM? Co to była za aplikacja?

Pozostało 580 znaków

2019-08-12 14:28
0

Ale pytasz, czy faktycznie był RDM, czy architekt twierdził, że jest RDM?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-08-12 14:28
0

Taki prawdziwy ;)

Pozostało 580 znaków

2019-08-12 16:20
0

No to tak chyba raz - był sobie strasznie skopany projekt (WebFormsy w najgorszej możliwej opcji, z SqlDataSource, czyli w jednym pliku wymieszany HTML i SQL, zero testowalności) przerabiałem w wolnym czasie z kolegami na DDD. Tylko tam były 3 encje i 2 agregate rooty. No i nie było przez nikogo używane.

A jak kiedyś zacząłem pisać DDD w projekcie, który był reklamowany jako DDD, ale tak naprawdę miał ADM (chociaż niektórzy twierdzą, że to się wcale nie kłóci, bo DDD masz wtedy, gdy "dbasz o projekt" :D), to potem zostałem wezwany na dywanik za psucie morale w zespole.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-08-13 15:50
0

Co to jest ADM?
Co to znaczy "robienie tego w DDD"?

@somekind
Może zostałeś wezwany na dywanik, bo czegoś nie zrozumiałeś.

DDD - Domain Driven Design; ADM - Anemic Domain Model, czyli DTO furgające po serwisach i radosna proceduralność - Klojtex 2019-08-13 16:04
A wezwany na dywanik został raczej dlatego, że to koledzy nie rozumieli czym jest DDD i programowanie obiektowe. Przynajmniej tak bym podejrzewał po opisie :) - Klojtex 2019-08-13 16:05

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0