Abbiamo una tipica applicazione N-Layer .NET che si trova tra il nostro database e il livello di servizio API Web. Questa applicazione è composta da Business Layer, Data Repository/Access e DTO e Business Objects correlati.Come classi/metodi di applicazione .NET di livello intermedio versione
Abbiamo soluzioni per la versione delle procedure memorizzate e gli endpoint delle API Web. Il problema è la soluzione per la versione di questo livello intermedio, i metodi della classe e gli oggetti dello schema. Tutte le ricerche di Google forniscono risultati per il controllo del codice sorgente della versione in una soluzione di controllo del codice sorgente o la versione con le informazioni sull'assemblaggio, nessuno di questi è ciò a cui ci riferiamo, quindi i risultati sono limitati.
Così, per esempio, abbiamo due punti finali:
... api/v1/fiscali/oneri
... api/v2/fiscali/oneri
v1 deve colpire una versione di il metodo CalculateTaxPctgs e v2 raggiunge un'altra versione con logica aziendale aggiornata. Insieme a entrambi abbiamo bisogno di utilizzare diverse versioni di POCO Tax e TaxItems in quanto abbiamo cambiato il nome di un campo in v2.
La soluzione facile da sviluppare ma difficile da gestire e molto rigida/statica sarebbe quella di creare due metodi diversi, CalculateTaxPctgs_V1 e CalculateTaxPctgs_V2. Questa non sembra una buona idea.
Difficile trovare le migliori pratiche o anche soluzioni alternative per questo dilemma. Si tratta di un'applicazione aziendale che richiede milioni di richieste ogni giorno, pertanto le prestazioni sono estremamente importanti, così come la gestione e l'affidabilità del codice.
Come già detto, è un'applicazione web api quindi dovremmo interrogare la richiesta, identificare la versione e caricare dinamicamente un gruppo diverso di assiemi. Ci abbiamo pensato ma non possiamo usare app o machine config dal momento che è dinamico.Cercando davvero un'implementazione di questo mondo reale se questo è il percorso migliore, siamo preoccupati per le prestazioni con carico dinamico sull'applicazione che ottengono milioni di richieste al giorno. Hai usato questo o solo suggerendolo? – kruegerste
Non l'ho usato in questo contesto e non posso offrirti un'implementazione reale. Sembrava che potesse offrire una soluzione. In caso contrario, probabilmente utilizzerei un carico dinamico non standard (probabilmente utilizzando una struttura di directory basata sul numero di versione). Spiacente non può essere di maggiore aiuto. Buona fortuna comunque. – mp3ferret