"Chi" dovrebbe gestire le attività secondarie per gli eventi?

1

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?

    
posta Brettetete 24.01.2016 - 08:43
fonte

1 risposta

1

Di solito è la responsabilità di un bus eventi o bus di comando . Sollevi eventi da qualche parte all'interno della tua applicazione e consegnali a un bus di comando. Il bus risolve quindi i gestori di eventi appropriati o gestori di comandi appropriati per l'evento che è stato sollevato e passa l'evento per l'elaborazione.

Puoi implementarlo in diversi modi. Alcuni eventi di scrittura di applicazioni in un archivio eventi (che può essere una semplice tabella di database) e un componente in esecuzione in modo asincrono gestiscono questi eventi eseguendo il polling dell'archivio eventi a intervalli per controllare se sono presenti nuovi eventi e gestire quelli. Questo può anche essere sincrono: gli eventi vengono conservati solo in memoria e al termine di un'operazione o di un numero di operazioni gestite dagli eventi. Per un'applicazione web, potresti avere un gestore che viene eseguito come ultima operazione in ogni evento di gestione richieste.

    
risposta data 24.01.2016 - 10:49
fonte

Leggi altre domande sui tag