C # Separa il negozio online in diverse soluzioni e pepite

-1

Sto creando un negozio di acquisti online. È costruito tramite Net MVC Core.

C'è un sito Web di Front End View: html, css, rasoio.

Abbiamo quindi il design del codice di back-end per i clienti: tra cui carrello della spesa, ricerca, acquisto di ordini, invio di ordini.

Infine, c'è un back-end per i venditori: i fornitori possono inviare il loro inventario, i prodotti e le quantità di fornitura che verranno inviati al negozio online. Questo può essere fatto con chiamate API o file flat.

Attualmente tutto è in 1 soluzione. Esiste una prassi generalmente raccomandata per la suddivisione in soluzioni diverse o dovrei trattenermi? Devo separare il backend del cliente dal back-end del fornitore? Qual è la prassi generale per diverse soluzioni e pacchetti Nuget? Ho appena iniziato a imparare C # e sto cercando le linee guida di base, non so da dove cominciare. Forse ci sono diversi gusti / metodi per farlo.

    
posta MarkAllison 17.08.2018 - 01:32
fonte

1 risposta

1

Entrambi i metodi hanno i loro vantaggi e svantaggi, e quale è meglio dipende in ultima analisi da molteplici fattori come la dimensione e la composizione della squadra, la configurazione di build e release e ciò che è più conveniente per te.

Molti progetti racchiudono tutto in un'unica soluzione, e per le codebase di piccole e medie dimensioni lavorate da poche persone questo è un approccio perfetto. Avrai la comodità di poter fare facilmente riferimento al codice comune senza fare confusione con feed NuGet privati o riferimenti incrociati, non è necessario passare da un'istanza di Visual Studio se la modifica che stai apportando tocca più soluzioni e il debug è minore di un dolore. A giudicare da Microsoft che si concentra su cose come il carico leggero in VS2017, questo è un caso d'uso piuttosto comune.

Nei progetti più grandi, tuttavia, l'idea di avere un unico repository di codice strettamente associato a tutto e il sink della cucina al suo interno richiede molta comunicazione e sincronizzazione tra gli sviluppatori. Se Team Vendor Backend ha appena cambiato la libreria comune e ha bisogno di rilasciare la versione aggiornata ieri, ma il team Customer Backend inizia a lamentarsi del fatto che ci vorranno un mese per integrare le modifiche, quella singola soluzione diventa un problema.

Puoi basarti sulla disciplina del controllo del codice sorgente e sulla ramificazione appropriata per risolverlo, ma a un certo punto diventa una buona idea dividere il tuo progetto in componenti indipendenti più piccoli - ad esempio, i tuoi metodi di utilità potrebbero diventare un pacchetto NuGet, con un repository e una soluzione separati e uno schema di controllo delle versioni coerente. Quindi Team Vendor Backend può aggiornare il codice più recente nella propria soluzione e Team Backend del cliente può impiegare del tempo a lavorare sull'integrazione del pacchetto più recente e su altre cose che devono fare senza essere trattenuto.

Se lavori da solo e non hai così tanto codice che diventa ingombrante affrontare una singola soluzione, probabilmente è eccessivo. Scambia la convenienza di essere in grado di modificare il codice e spingere le cose - se il tuo codice comune è un riferimento NuGet, devi cambiare il codice nella soluzione comune, assicurati che sia in grado di annusare rispetto ai test e agli standard delle unità, costruire e inseriscilo nel feed NuGet (presumibilmente prima quello locale per i test, poi quello di rilascio), aggiorna il pacchetto e solo dopo aver completato la modifica.

In breve: se i vantaggi dell'accoppiamento unilaterale dei moduli superano gli svantaggi di dover mantenere il rigoroso processo di rilascio, vai per basi di codici separate per ogni modulo. Altrimenti, è perfettamente giusto tenerlo in una soluzione.

    
risposta data 17.08.2018 - 02:33
fonte

Leggi altre domande sui tag