Qual è la procedura migliore per condividere un database in ASP.NET Core con altri progetti?

0

Ho più applicazioni Web ASP.NET Core che devono condividere un database dei dipendenti. Voglio poter scrivere il Repository e i Modelli una sola volta e usarlo in più progetti.

Qual è la best practice per questo e come posso ottenerlo con ASP.NET Core?

Utilizzo di VS2017, SQL Server e IIS adesso.

    
posta g00n3r 04.05.2017 - 19:46
fonte

2 risposte

3

In realtà direi di non farlo. La condivisione di un database - qualsiasi tipo di database - tra più applicazioni equivale praticamente a un nodo centrale e puoi trovarti in un punto molto difficile lungo la linea quando è richiesto qualsiasi tipo di modifica dello schema. In realtà esiste un anti-pattern per questo: il database di integrazione ( link ).

La condivisione di un livello di accesso ai dati è una tra le applicazioni è una possibilità, sia da un gestore di pacchetti o da cartelle condivise di controllo del codice sorgente, ma nella mia esperienza ciò rende effettivamente la flessibilità e la manutenibilità dei sistemi un centinaio di volte peggiore. L'accoppiamento tra i sistemi potrebbe rendere i tempi degli aggiornamenti del database notevolmente più difficili.

Invece, consiglierei di rendere uno dei sistemi responsabili per lo schema del database. Di solito, c'è un'applicazione il cui dominio copre più naturalmente i dati. Quindi, esporre l'accesso ai dati tramite alcune API pubbliche, se WCF, HTTP, un bus dei messaggi o altro. Questo ti dà uno strato di isolamento dal cambiamento; quando il database ha motivo di cambiare, solo l'applicazione responsabile deve aggiornarsi allo stesso tempo. Per quanto riguarda le altre applicazioni, nulla cambia quando ciò accade, poiché l'API rimane la stessa.

    
risposta data 04.05.2017 - 21:36
fonte
1

Quello che ho fatto in passato è impostare un repository git che condivide più soluzioni. Entrambe le soluzioni condividono i progetti di repository e dominio

La struttura della cartella dovrebbe essere qualcosa del tipo:

MyProject
├── Solutions
│   ├── MyProject.SolutionOne.sln
│   ├── MyProject.SolutionTwo.sln
|   |
├── Projects
|   |
│   ├── MyProject.SolutionOne.Web
│   │   ├── MyProject.SolutionOne.Web.csproj
|   |   
│   ├── MyProject.SolutionTwo.Web
│   │   ├── MyProject.SolutionTwo.Web.csproj
|   |
│   ├── MyProject.Repository
│   │   ├── MyProject.Repository.csproj
|   |
│   ├── MyProject.Domain
│   │   ├── MyProject.Domain.csproj
    
risposta data 04.05.2017 - 21:08
fonte

Leggi altre domande sui tag