J'ai écrit un portail ASP.NET WebForms pour un client. Le projet a en quelque sorte évolué au lieu d'être correctement planifié et structuré depuis le début. Par conséquent, tout le code est écrasé dans le même projet et sans aucune couche. Le client est maintenant satisfait de la fonctionnalité, je voudrais donc refactoriser le code de telle sorte que je serai confiant quant à la publication du projet. Comme il semble y avoir de nombreuses façons différentes de concevoir l'architecture, j'aimerais avoir quelques opinions sur la meilleure approche à adopter.
FONCTIONNALITÉ
Le portail permet aux administrateurs de configurer des modèles HTML. D'autres "partenaires" associés pourront afficher ces modèles en ajoutant du code IFrame à leur site. Dans ces modèles, les clients peuvent enregistrer et acheter des produits. Une API a été implémentée à l'aide de WCF permettant également aux entreprises externes de s'interfacer avec le système. Une section Admin permet aux administrateurs de configurer diverses fonctionnalités et d'afficher les rapports pour chaque partenaire. Le système envoie des factures et des notifications par e-mail aux clients.
ARCHITECTURE ACTUELLE
Il utilise actuellement EF4 pour lire / écrire dans la base de données. Les objets EF sont utilisés directement dans les fichiers aspx. Cela a facilité un développement rapide pendant que j'écrivais le site, mais il est probablement inacceptable de le garder comme ça car il associe étroitement la base de données avec l'interface utilisateur. Une logique métier spécifique a été ajoutée aux classes partielles des objets EF.
DES QUESTIONS
Le refactoring aura pour objectif de rendre le site évolutif, facile à maintenir et sécurisé.
Quel type d'architecture serait le mieux pour cela? Veuillez décrire ce qui devrait être dans chaque couche, si je dois utiliser le modèle DTO / POCO / Active Record, etc.
Existe-t-il un moyen robuste de générer automatiquement des DTO / BO pour que toutes les améliorations futures soient simples à implémenter malgré les couches supplémentaires?
Serait-il avantageux de convertir le projet de WebForms en MVC?