He escrito un portal ASP.NET WebForms para un cliente. El proyecto ha evolucionado en lugar de estar adecuadamente planificado y estructurado desde el principio. En consecuencia, todo el código se combina dentro del mismo proyecto y sin ninguna capa. El cliente ahora está contento con la funcionalidad, por lo que me gustaría refactorizar el código de modo que tenga la seguridad de lanzar el proyecto. Como parece haber muchas formas diferentes de diseñar la arquitectura, me gustaría tener algunas opiniones sobre el mejor enfoque a seguir.
Funcionalidad
El portal permite a los administradores configurar plantillas HTML. Otros "socios" asociados podrán mostrar estas plantillas agregando código IFrame a su sitio. Dentro de estas plantillas, los clientes pueden registrarse y comprar productos. Se implementó una API utilizando WCF que permite a las compañías externas interactuar con el sistema también. Una sección de administración permite a los administradores configurar varias funciones y ver informes para cada socio. El sistema envía facturas y notificaciones por correo electrónico a los clientes.
ARQUITECTURA ACTUAL
Actualmente está usando EF4 para leer / escribir en la base de datos. Los objetos EF se usan directamente dentro de los archivos aspx. Esto ha facilitado el desarrollo rápido mientras escribía el sitio, pero probablemente sea inaceptable mantenerlo así, ya que está estrechamente acoplado a la base de datos con la interfaz de usuario. Se ha agregado lógica empresarial específica a clases parciales de los objetos EF.
PREGUNTAS
El objetivo de la refactorización será hacer que el sitio sea escalable, fácil de mantener y seguro.
¿Qué tipo de arquitectura sería mejor para esto? Describa qué debe haber en cada capa, si debo usar el patrón DTO / POCO / Active Record, etc.
¿Existe una forma sólida de autogenerar DTO / BO para que las mejoras futuras sean simples de implementar a pesar de las capas adicionales?
¿Sería beneficioso convertir el proyecto de WebForms a MVC?