Ecco la situazione che ho ereditato:
- Abbiamo circa 10 siti web (moduli web di Asp.net) ciascuno con il proprio database.
- Ciascuno di questi database contiene alcuni dati specifici del sito e ognuno ha una forma di una tabella utente che verrà mappata a ciò che viene chiamato un servizio utente.
- Il Servizio utenti è solo un altro sito Web che dispone di un database con una tabella (Utente) con circa 3 identificativi univoci diversi per un utente: un Guid UserId, un ID applicazione desktop interno (app di terze parti, necessaria per eseguire il mapping a it) e un nome utente.
- Su tutti i diversi siti Web i database hanno la tabella Utente, a volte chiamata Persona, o Studente, o qualsiasi altra cosa, e sono incoerenti in cui UserService.Utente. [IdentifyingColumn] mappano a.
Il problema:
Sta arrivando al punto in cui queste applicazioni ora hanno bisogno di condividere alcuni dati tra loro, e vedo che è necessario aumentare man mano che i reparti sono razionalizzati ancora di più. Con questo set up corrente, è un sacco di salto del telaio per ottenere la colonna UserId giusta da abbinare alla colonna UserId corretta nel UserService.
Confuso ancora? Anche a me ..
La domanda:
Come affrontare la correzione del problema? Ho alcune idee diverse, alcune mi piacciono più di altre, ma per implementarle ho bisogno di alcuni solidi vantaggi che posso portare a capo dell'IT, oltre a giustificare i tempi di programmazione necessari per la riscrittura.
Idea 1: crea una vera applicazione intranet. Un'applicazione web con un database. In questo modo vivono tutti nello stesso progetto e la condivisione dei dati tra i vari reparti è molto semplice e veloce.
Idea 2: Crea un campo identificativo "Chiave master" che sarà il fine a tutti per identificare un utente. Rendi questa chiave disponibile su ogni database e quindi non ci sarà alcuna mappatura dispari e i vari siti potranno parlarsi. Per me questo risolve un problema, mappando ogni db a quello successivo. È ancora molto frammentato e il riutilizzo del codice è molto limitato.
Idea 3: lavora con esso nella forma attuale cercando di continuare la moda attuale di molti piccoli database e siti.
Quale delle opzioni sopra indicate suggeriresti e perché?