Abbiamo ereditato un grande sito Web ASP.NET costruito interamente in WebForms. Il sito ha oltre 200 pagine, distribuite su 60 progetti WebForm all'interno della soluzione del sito. Circa metà delle pagine sono di contenuto statico mentre l'altra metà ha una quantità variabile di complessità lato server, principalmente acquisizione e visualizzazione dei dati. Non c'è alcun uso dei controlli del server Web ASP.NET poiché li abbiamo eliminati gradualmente a favore del puro html. Gestiamo i dati SQL tramite (un sacco di) stored procedure sul server SQL. I nostri server eseguono Windows Server 2012 R2, IIS 7 con il framework ASP.NET 4.5.
Stiamo facendo ricerche se è possibile convertire gradualmente in MVC o se una riscrittura MVC completa è il modo migliore per andare.
Per evitare di diventare troppo ampio, questa domanda riguarda la procedura generale (non specifica del progetto) di conversione di un ecosistema WebForms in un ecosistema ASP.NET-MVC. E l'attenzione specifica è la stima dello sforzo (date le misurazioni del progetto di cui sopra). Ricerca personale
I motivi per cui vogliamo convertire i WebForm in ASP.NET-MVC sono principalmente:
- URL di routing e SEO friendly,
- struttura e separazione del codice migliori,
- Entity Framework per la gestione centralizzata dei dati,
- scaffolding per uno sviluppo rapido tramite generazione automatica di codice,
- l'API Web per la comunicazione AJAX e l'aggiornamento senza interruzioni della pagina senza aggiornamento, - e per passare dalla piattaforma Webforms non più supportata (da .NET 5).
Comprendiamo che alcuni di questi concetti possono essere inseriti in webform ma non altrettanto integrati come in MVC. Vorremmo sfruttare la flessibilità offerta da MVC.
Quindi, suppongo che avremo bisogno di fare qualcosa di simile al seguente:
- convertire gradualmente:
- aggiungi una struttura dello scheletro MVC che copra una parte specifica (probabilmente il sito .master e i rispettivi controlli (.ascx) e un singolo progetto WebForms)
- riempi la struttura con funzionalità, riutilizzando blocchi rilevanti di codice esistente rielaborandoli secondo necessità riscrittura completa:
- crea una struttura MVC completa, creando eventualmente una nuova struttura di progetto, ridistribuendo le funzionalità tra di loro
- compilalo copiando e incollando il codice esistente o riscrivendo le parti che sono più facili in questo modo
Naturalmente potrebbero non essere corretti; come ho detto, è quello che abbiamo per ora. Domande:
Could you outline a high-level conversion procedure in either case?
In particolare,
- nello scenario di conversione graduale, qual è il processo più indolore?
- Per riscrivere e sostituire il sito .master e i controlli dipendenti al layout MVC e alle visualizzazioni e quindi caricare il rimanente ancora da convertire nel nuovo layout MVC?
- Oppure per caricare le viste nella pagina principale esistente?
- Oppure puoi suggerire un metodo alternativo che riduca al minimo i contenuti MVC e webform duplicati durante il periodo di transizione?
- nello scenario di riscrittura completa, è preferibile combinare tutto in un singolo progetto MVC, mantenere la struttura dei 60 progetti esistente o ripartire la funzionalità secondo un principio di MVC-friendly? Attualmente la struttura del progetto corrisponde alla struttura dell'URL.
Qualsiasi consiglio o feedback costruttivo sarebbe molto apprezzato.