Invio di notifiche complete al client

3

Quindi con cqrs, accettiamo che la coerenza sia definitiva.

Tuttavia, ciò non significa che l'utente debba continuamente eseguire il polling o che, in un secondo momento, un aggiornamento debba richiedere più di 500ms da sincronizzare.

Per amore di UX, vogliamo almeno dare l'illusione di coerenza, o se non possibile, essere il più trasparente possibile.

Con questo in mente, ho questa configurazione:

  • client Web angularjs, utilizza
  • servizi di webapi restful, invia comandi a
  • Gestori di comandi nservicebus, salvati in
  • neventstore, invia eventi a
  • Gestori di eventi nservicebus, invia un messaggio a
  • hub signalr, invia notifiche a
  • client Web angularjs

quindi con quell'impostazione, in teoria

  • alcuni avvia una richiesta
  • il server convalida la richiesta
  • invia i comandi necessari

Nel frattempo

  • il client ottiene una risposta di 200
  • aggiorna la vista: lavorandoci sopra
  • ottiene il messaggio qualche tempo dopo: fatto, ecco i dati aggiornati

Ecco dove le cose si fanno interessanti, ogni comando può generare più eventi. Non sono sicuro se questo è un no serio, no o no, ma è così che è attualmente. Ad esempio, un nuovo cliente genera CustomerIDCreated, CustomerNameUpdated, CustomerAddressUpdated, ecc ...

Quale gestore di eventi ha bisogno di notificare il client? Dovrebbero tutti in un aggiornamento in stile barra di avanzamento?

    
posta ton.yeung 12.08.2013 - 23:31
fonte

1 risposta

1

In generale, un gestore di eventi dovrebbe notificare al cliente se il cliente è (o potrebbe essere) interessato alle informazioni.

Tuttavia, la granularità del messaggio è importante.

Ricorda che ogni volta che finisci per passare informazioni sulla rete, passi dal regno dell'elaborazione a microsecondi a millisecondi di tempo trascorso.

Per questo motivo, non sono convinto che la granularità fine degli eventi che hai descritto sia appropriata.

Jim Webber ha un bel po 'da dire sull'argomento, raccomandando che la granularità dovrebbe essere simile a quella che avresti utilizzare se il servizio era una persona reale in un'azienda di medie e grandi dimensioni. Nel tuo caso, un singolo messaggio CustomerUpdated invece di più messaggi più piccoli.

    
risposta data 19.10.2013 - 08:00
fonte

Leggi altre domande sui tag