Per un progetto prototipo ho creato un'applicazione Angular 2 con funzionalità CRUD semplice che utilizza Auth0 per gestire l'autenticazione con un back-end contenente un progetto Web API (core), servizio e repository.
Ho scelto di utilizzare un database Auth0 per archiviare tutte le informazioni dell'utente (e non una tabella interna personalizzata) perché non ho visto un motivo per non farlo e voglio evitare una complessità non necessaria.
A questo punto ho bisogno di mostrare tutti gli utenti in una tabella HTML combinata con le informazioni dal mio database personalizzato, ad esempio: alcuni utenti sono collegati a un progetto, tutti gli utenti dovrebbero essere mostrati, ma solo il link-to-project gli utenti dovrebbero avere un pulsante accanto al nome. Per questo uso l'API di gestione Auth0 per recuperare tutti gli utenti. Dove sarebbe il posto migliore per unire l'utente e le tabelle del progetto che esistono entrambi in diversi database (gli utenti sono raggiungibili solo usando l'API di gestione Auth0 esterna.
- Repository: recupera tutti gli utenti dall'API di gestione e tutti i progetti che utilizzano SQL, quindi combina gli elenchi.
- API Web: recupera tutti gli utenti dall'API di gestione e da tutti i progetti da ProjectService, quindi combina gli elenchi.
- Clientside: recupera tutti gli utenti dall'API di gestione utilizzando Angular 2 e tutti i progetti da ProjectController (API interna), quindi combina gli elenchi utilizzando javascript.
- Giungiamo alla conclusione che dovrei unire il database Auth0 a quello personalizzato.
Nota aggiuntiva: se ad esempio utilizzare il repository per unire le tabelle sarebbe la soluzione migliore, che cosa dovrebbe accadere quando gli utenti dovrebbero essere mostrati su una pagina diversa senza la necessità di ulteriori informazioni. Suppongo che ora sia meglio chiamare direttamente l'API di gestione dal client, risultando in una situazione in cui le chiamate all'API di gestione vengono diffuse attraverso l'intera applicazione.