Ho scritto un portale WebForms ASP.NET per un client. Il progetto si è evoluto piuttosto che essere adeguatamente pianificato e strutturato sin dall'inizio. Di conseguenza, tutto il codice viene mescolato insieme all'interno dello stesso progetto e senza alcun livello. Il cliente ora è soddisfatto della funzionalità, quindi mi piacerebbe rifattorizzare il codice in modo tale da fidarmi del rilascio del 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 i 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. Un'API è stata implementata utilizzando WCF consentendo 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 CORRENTE
Attualmente sta usando EF4 per leggere / scrivere nel database. Gli oggetti EF vengono utilizzati direttamente all'interno dei file aspx. Ciò ha facilitato lo sviluppo rapido mentre scrivevo il sito ma è probabilmente inaccettabile mantenerlo in questo modo poiché sta accoppiando strettamente il db con l'interfaccia utente. La logica aziendale specifica è stata aggiunta alle classi parziali degli oggetti EF.
DOMANDE
L'obiettivo del refactoring sarà rendere il sito scalabile, facilmente mantenibile e sicuro.
-
Che tipo di architettura sarebbe meglio per questo? Descrivi cosa dovrebbe essere in ogni livello, se dovrei usare DTO / POCO / Active Record pattern ecc.
-
C'è un modo efficace per generare automaticamente DTO / BOs in modo che eventuali miglioramenti futuri siano semplici da implementare nonostante i livelli extra?
-
Sarebbe utile convertire il progetto da WebForms in MVC?