Zaleznosci miedzy 3 komponentami

0

Wyobrazmy sobie, ze mamy dwa 'komponenty':

  1. Pierwszy dostarcza funkcjonalnosc uzytkownikom, gdzie mozna zdobywac punkty i w pewnym momencie przypisac je do konta usera
  2. Drugi oferuje mozliwosc 'wyslania' X punktow uzytkownikowi Y'

Komponenty komunikuja sie na zasadzie, gdy uzytkownik zdobedzie jakis punkt i zdecyduje o zakonczeniu zdobywania punktow :P, to komponent 1 wola serwis z komponentu 2 na zasadzie - 'wyplac 5 punktow userowi ALAMAKOTA' i serwis (ten z drugiego komponentu) zwraca inforamcje, czy udalo sie poprawnie dodac punkty, czy moze nie i trzeba ponowic request.

Wszystko sobie hula, ale nagle 3 komponent chcialby dostac powiadomienie o detalach tej transakcji i dostarcza odpowiedni serwis.

Gdzie nalezy wpiac ten serwis?

  1. Komponent 1, gdy dostanie response z drugiego, powinien zawolac serwis (z komponentu numer 3) ? -> komponent 2 nie wie nic o komponencie numer 3
  2. Czy moze serwis z drugiego komponentu sam powinien zawolac serwis z komponentu numer 3 ? -> komponent 1 nie wie nic o komponencie numer 3
  3. czy jakos inaczej?
0

A nie możesz tego spiąć eventami? W momencie transakcji emitujesz zdarzenie, które konsumuje ten trzeci zainteresowany komponent i bangla. Komponenty 1 i 2 nie musza wiedzieć o istnieniu obserwatora/subskrybenta.

0

Ok, a co w sytuacji, gdy nie ma opcji na eventy.
Czy dwie moje propozycje maja jakieś plusy/minusy względem siebie?

0

Jak miałem coś podobnego w javie, to używałem do tego funkcji statycznych, były najprostszym rozwiązaniem.

1
witeks44 napisał(a):

Jak miałem coś podobnego w javie, to używałem do tego funkcji statycznych, były najprostszym rozwiązaniem.

To bardzo obiektowe i testowalne podejście :O

Tak na serio, jak nie ma opcji na eventy, to w zależności jaką masz architekturę możesz zrobić tak, że jest sobie serwis implementujący flow biznesowe i tam sekwencyjnie wykonywane są operacje na obiektach domenowych. Wtedy wpinasz się tam. Ważne, żeby jak najwiecej rzeczy delegować poza ten serwis, bo zostaniesz z 8-tysięcznikiem. Minus jest taki, że masz niepotrzebny coupling, ale rozumiem, że nie wszędzie są eventy a szkoda, bo to można zrobić łatwo nawet synchronicznie.

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