Estoy trabajando en un gran proyecto heredado que se creó con ASP.NET Web Forms y la idea de agregar las bibliotecas MVC al mismo proyecto ha sido descartada. Sé que esto es posible (hay muchos artículos disponibles), pero me pregunto si / por qué esto es / no es recomendado por alguien que haya hecho algo similar.
La idea es que podríamos construir nuevas áreas de la aplicación con el nuevo patrón MVC y mantener las páginas heredadas funcionando como siempre.
EDITAR: Para aclarar, no estamos considerando el patrón MVP, ya que ya se está utilizando en algunas partes de este proyecto, sino haciendo algo similar a lo que se describe en este artículo: https://www.simple-talk.com/dotnet/ asp.net/mixing-web-forms-and-asp.net-mvc/
Respuestas:
Esta no es una mala manera de reescribir una aplicación. Esto sería particularmente útil para una reescritura a largo plazo en fases:
Agregue un "proyecto de prueba" que utilice pruebas CodedUI (o Watin o Selenium) para probar la aplicación WebForms a través del navegador. También puede usar SpecFlow para definir sus casos de prueba. He usado esto con gran efecto en una aplicación de WebForms.
Después de tener una buena cobertura de prueba de la aplicación WebForms, puede comenzar la siguiente fase de refactorización: mover componentes comunes a una biblioteca de clases separada. Aquí es donde se podrían crear sus modelos y la capa de acceso a datos. Puede agregar una referencia a esta biblioteca a sus aplicaciones de WebForms. Las pruebas que escribió en la fase 1 se aseguran de no romper las reglas comerciales existentes
Transfiera la funcionalidad a su aplicación MVC, modificando sus pruebas para usar la aplicación MVC, no la aplicación WebForms.
Los pasos 1 y 2 podrían abordarse simultáneamente. Incluso puede comenzar en el Paso 3 una vez que haya probado toda una característica, y sus componentes comunes estén desacoplados de la aplicación WebForms.
Divide el trabajo en características principales. Una vez que una función es compatible con la aplicación MVC, apáguela en la aplicación WebForms. Eventualmente se convertirá en una cáscara vaciada de su antiguo yo hasta que pueda eliminar el código por completo.
fuente