Come scegliere tra una biblioteca e un progetto condiviso?

1

Sto lavorando su un set di microservizi .NET Core 2.0 insieme ad altri sviluppatori. Ho scritto del codice per aggiungere il mio log personalizzato come descritto qui . Il mio logger invia i messaggi di registrazione a un sistema di log basato su cloud esterno (quindi non sulla riga di comando). Ora sto cercando di scoprire dove deve essere posizionato il mio codice. La registrazione è necessaria per tutti i microservizi.

Un'opzione è una libreria. Questa libreria può essere chiamata da tutti i microservizi. Questa sembra una soluzione ovvia. La libreria deve essere compilata una sola volta e può essere utilizzata ovunque.

Un'altra opzione è un progetto condiviso. È compilato come parte di ogni progetto. Questa potrebbe sembrare una soluzione meno ovvia. Il codice deve essere compilato come parte di ogni microservizio per tutto il tempo. Tuttavia, vedo alcuni ovvi vantaggi di questa soluzione:

  1. Un progetto condiviso non ha riferimenti. Pertanto i riferimenti utilizzati non possono causare conflitti di versione con riferimenti utilizzati all'interno di Microservices. Non esistono.
  2. Un progetto condiviso può anche (è probabile che sia) compilato come parte di una futura versione di .NET Core. Il progetto condiviso non ha una versione di .NET Core in sé, quindi una scelta sbagliata non può essere fatta.

Come dovrei fare la scelta e quale è la soluzione migliore per essere a prova di futuro?

    
posta Daan 21.10.2017 - 16:32
fonte

1 risposta

3

A mio avviso, raramente si tratta di un buon progetto per un progetto condiviso.

Il motivo principale è il controllo delle versioni e il controllo delle modifiche. Se ricompilate il codice sorgente, allora in senso stretto avete una nuova versione. Non è tanto un problema in questi giorni di build server e ci. Ma alcuni di noi ricorderanno quando si costruisce su una macchina di sviluppo e la copia alla produzione era una cosa normale. Dovevi preoccuparti che quale dev aveva compilato il codice perché le diverse configurazioni di macchina e compilatore avrebbero cambiato il file binario risultante.

Dovresti compilare la tua libreria e metterla in versione. Quindi usa quel binario con versione in altri progetti tramite un gestore di pacchetti come nuget.

Se e quando viene rilasciata una nuova versione di .net standard, è possibile aggiornare e ricompilare la libreria con quella versione. e hai due versioni della tua libreria, una per ogni target.

Se correggi un bug nella libreria, pubblichi di nuovo una nuova versione e puoi verificare quale degli altri tuoi progetti deve essere aggiornato.

    
risposta data 22.10.2017 - 11:58
fonte

Leggi altre domande sui tag