Cqrs asp mvc co dalej po handler ?

0

Witam. Próbuje zaimplementowac CQRS w aplikacji ale bez ES. Korzystając z różnych blogów i przukładów mam command dispatchera który wywołuje odpowiedni command handler (analogicznie dla query ) i co dalej teraz ? Np przed wykonaniem commendy czyli zapisu do bazy chciałbym sprawdzić czy wpis nie koliduje z nnymi ( zakres dat itp ) jakąś klasa typu create validation która pobierze dane z bazy i sprawdzi odpowodnie warunki korzystając np z jakiegoś repository do pobrania ? Ciężko znaleźć konretny przykład. Może ktoś coś podpowie ?

0
szydlak napisał(a):

przed wykonaniem commendy czyli zapisu do bazy chciałbym sprawdzić czy wpis nie koliduje z nnymi ( zakres dat itp )

W handlerze możesz to sprawdzać. Lub jesli prowadzisz projekt w DDD to w modelu napisac metody sprawdzające.

0

Tak mi przyszło na myśl, żeby zrobić coś w stylu Chain of responsibility : DbValidation - > DbInsert.

0
szydlak napisał(a):

Tak mi przyszło na myśl, żeby zrobić coś w stylu Chain of responsibility : DbValidation - > DbInsert.

Jeśli potrzebujesz wzorców z DDD to możesz np zrobić serwis który będzie sprawdzał czy np. tytuł filmu istnieje i korzystać z niego w agregacie. Wydaje mi się, że równie dobrze można by to do reposiotry wpakować, chociaż wersja z agregatem wydaje mi się bardziej czytelna intuicyjna.

Ale jeśli to ma być tylko CRUD, bez "logiki" to po prostu rób to w handlerze bez żadnych nakładek na ORM. Jeśli wiesz, że "encja"(lub tabela) będzie miała tylko kilka operacji to równie dobrze możesz traktować jako handlery metody w serwisie bez dispachera, ale to również kwestia gustu.

Masz dla przykładu moje podejście przy CRUD'zie https://github.com/Ja-rek/CSharp-Example/tree/master/CrudFramework

0

Jeśli chodzi o ddd to to mam tu braki. Do tej pory robiłem tak , że w kontrolerze miałem serwis np Bookservice który miał wiele różnych metod. Np AddBook RemoveBook itp. No i z czasem ten serwis zaczyna się rozrastac dość mocno i jest tam wszystko praktycznie. Teraz eksperymentuje z podziałem na command oraz query. I command handler uruchamia ciąg operacji. Np najpierw walidacja pol , potem walidacja pod kątem istnienia w bazie np tej samej nazwy. Potem wstawienie rekordu do bazy. I w ten sposób mam każde zadanie w innej klasie (chain of responsibility )

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