Condivisione di eventi identici, con diversi ambiti, tra librerie client e server, in un'architettura di micro-servizi

3

Dispongo di un repository utente condiviso (id, nome, e-mail, password, ecc.) esposto come servizio REST e di più siti Web indipendenti che accedono a questo servizio REST (dal back-end) come mezzo per condividere un base utente comune su più siti.

Ho un bus eventi in-memory locale (pub / sub) come parte dell'implementazione del server REST - pubblica eventi come UserCreated , UserDeleted , ecc. che mi consente di collegare nuovi listener che eseguire varie azioni, come l'invio di e-mail di notifica, ecc.

Come parte dell'implementazione del client REST, ho anche un bus eventi, con gli stessi eventi, come UserCreated , UserDeleted , ecc. - questi eventi hanno la stessa forma e il medesimo carico utile, ma non avere lo stesso ambito.

Cioè, se un utente viene creato sul sito A, l'evento UserCreated viene attivato sul client A e quando accede all'API REST sul server, l'evento UserCreated viene attivato sul server, ma il l'evento, ovviamente, non si verifica sul sito B, e viceversa.

Se gli eventi sul server e sui client hanno la stessa forma e il medesimo carico utile e differiscono solo in termini di ambito, posso inserire queste implementazioni di eventi in una libreria condivisa e riutilizzarle nelle implementazioni client e server.

La mia preoccupazione è che, poiché le implementazioni di listener di eventi sarebbero compatibili con l'interfaccia, potrebbero indurre in errore gli altri sviluppatori ad aspettarsi che questi eventi si verifichino anche con la stessa frequenza quando collegati al server REST o a un client REST.

D'altra parte, se sono compatibili, potrei scrivere un listener di notifica e-mail una volta e collegarlo al server REST, per inviare notifiche di registrazione a un amministratore e collegare la stessa implementazione ai client REST , per inviare e-mail di benvenuto ai nuovi utenti.

Va bene riutilizzare queste implementazioni di eventi, anche se non hanno lo stesso ambito?

O dovrei duplicare le implementazioni degli eventi, rispettivamente nelle librerie client e server REST, per assicurarmi che altri sviluppatori capiscano che gli eventi, sebbene di forma identica, non hanno lo stesso ambito?

In conclusione, cosa definisce un evento? È definito dalla sua forma e dal suo carico utile, o è anche definito dal suo ambito, anche se un cambiamento di portata non produce differenze tangibili in termini di forma o di carico utile?

    
posta mindplay.dk 15.12.2015 - 14:09
fonte

0 risposte

Leggi altre domande sui tag