Ho scritto un portale ASP.NET WebForms per un client. Il progetto si è evoluto piuttosto che essere adeguatamente pianificato e strutturato sin dall'inizio. Di conseguenza, tutto il codice viene unito nello stesso progetto e senza livelli. Il client ora è soddisfatto della funzionalità, quindi vorrei riformattare il codice in modo tale da essere sicuro di rilasciare il progetto. Poiché sembrano esserci molti modi diversi di progettare l'architettura, vorrei alcune opinioni sull'approccio migliore da adottare.
FUNZIONALITÀ
Il portale consente agli amministratori di configurare modelli HTML. Altri "partner" associati saranno in grado di visualizzare questi modelli aggiungendo il codice IFrame al loro sito. All'interno di questi modelli, i clienti possono registrarsi e acquistare prodotti. È stata implementata un'API utilizzando WCF che consente alle aziende esterne di interfacciarsi anche con il sistema. Una sezione di amministrazione consente agli amministratori di configurare varie funzionalità e visualizzare report per ciascun partner. Il sistema invia fatture e notifiche e-mail ai clienti.
ARCHITETTURA ATTUALE
Attualmente utilizza EF4 per leggere / scrivere nel database. Gli oggetti EF vengono utilizzati direttamente all'interno dei file aspx. Ciò ha facilitato il rapido sviluppo mentre stavo scrivendo il sito, ma è probabilmente inaccettabile mantenerlo così poiché combina strettamente il db con l'interfaccia utente. È stata aggiunta una logica aziendale specifica alle classi parziali degli oggetti EF.
DOMANDE
L'obiettivo del refactoring sarà quello di rendere il sito scalabile, facilmente gestibile e sicuro.
Quale tipo di architettura sarebbe la migliore per questo? Descrivi cosa dovrebbe essere in ogni livello, se dovrei usare il modello DTO / POCO / Active Record ecc.
Esiste un modo affidabile per generare automaticamente DTO / BO in modo che eventuali miglioramenti futuri siano facili da implementare nonostante i livelli extra?
Sarebbe utile convertire il progetto da WebForms a MVC?