Web Forms y MVC en el mismo proyecto web


8

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/



1
Esto no es un duplicado. El patrón MVP que usa Webforms y MVC no son lo mismo. MVP es un patrón para hacer que su sitio sea más comprobable y mantener sus capas mejor separadas mientras todavía usa formularios web. MVC es un animal diferente.
quaz579


1
@gnat, esto no es remotamente un duplicado de esa otra pregunta. La otra pregunta no menciona MVC, por un lado. Parece que le estás diciendo que edite su pregunta para aclararla porque has elegido no leer con cuidado.
Kyralessa

Respuestas:


5

Esta no es una mala manera de reescribir una aplicación. Esto sería particularmente útil para una reescritura a largo plazo en fases:

  1. 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.

  2. 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

  3. 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.


1
Esta es una gran estrategia en concepto, pero probablemente llevará años eliminar gradualmente toda la funcionalidad de una aplicación de este tamaño (esta base de código tiene al menos 8 años con un equipo de ~ 20 desarrolladores). Estoy más interesado en qué tan bien Webforms y MVC juegan juntos en el mismo proyecto.
quaz579
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.