Sono attualmente in fase di creazione di un sito web / webapp.
La mia applicazione è basata su Node JS con il framework espresso.
Il mio concetto di backend core è costituito da
- router: gestisce la richiesta http. Mi piace
[POST] /api/team
- controller: logica di business dietro i router
- modello: interfaccia tra database e controllore
Non sono sicuro che ciò corrisponda a modelli di best practice come MVC. È iniziato come un piccolo progetto personale con logica di business nei router. A un certo punto ho dovuto rifrattare la mia app (soprattutto considerando DRY), quindi ho aggiunto i controller.
Quindi diciamo che si può creare una squadra con il suo account. Il router convaliderà la richiesta (l'utente è autenticato, ha le autorizzazioni, ...) e inoltra l'attività al controller. Il controller convaliderà i dati del modulo, creerà una nuova voce del database e restituirà la nuova voce. Il router renderà il modello e risponderà alla richiesta.
Penso che finora tutto dovrebbe essere abbastanza semplice.
Ora il team viene creato e l'utente può invitare altri utenti alla sua squadra. Praticamente la stessa procedura di prima.
Ora veniamo alla mia domanda attuale.
L'utente invitato riceve una notifica. Attualmente creo le notifiche nello stesso posto in cui chiamo il modello per creare una nuova voce per l'invito.
Non mi piacciono le notifiche dopo nello stesso posto. Le notifiche sono un effetto collaterale e riducono la leggibilità dell'attività effettiva.
Quindi la mia idea era di usare gli eventi. Il controllore del team dovrebbe emettere un evento quando qualcuno è stato invitato.
Il gestore eventi creerà la notifica effettiva. Ma nel mio attuale concetto non esiste una componente che possa rientrare nel mio ruolo di gestione dell'evento.
Il controller di notifica potrebbe ascoltare gli eventi sul controller del team. Ma questo potrebbe finire nelle dipendenze dell'anello (l'esempio attuale non è il miglior esempio per questa situazione).
Quindi la mia domanda è: CHI dovrebbe ascoltare gli eventi e completare le attività collaterali?