¿Puedo usar ASP.NET MVC junto con formularios Web ASP.NET regulares?

A pedido de un cliente, he creado un gran sitio con formularios web ASP.NET. El problema es que estoy encontrando que los formularios Web de ASP.NET son algo poco intuitivos (mi gusto personal solamente). Entonces, lo que me gustaría hacer es usar MVC, pero no puedo esperar que mi cliente pague por mi tiempo en una reescritura completa (ni tiene el tiempo).

Entonces, lo que estoy preguntando es si puedo usar ASP.NET MVC y formularios web al mismo tiempo y gradualmente usar MVC cada vez más. ¿Algun consejo?

Actualización 2014:

Visual Studio 2013 nos acerca a One ASP.NET. No hay ningún tipo de proyecto MVC o proyecto de formularios web, solo hay ASP.NET. Si desea mezclar Web Forms y Web API, o MVC y SignalR, ¡adelante! Usted es alentado y apoyado. Nuevas características y funcionalidades se incorporan con NuGet sin romper las aplicaciones existentes.

VS 13

Por lo tanto, ahora se fomenta la mezcla de Web Forms y MVC (que prácticamente ha estado funcionando a la perfección) y se confunden los límites. Supongo que MS reconoció la necesidad de permitir que los proyectos migren lentamente a MVC, o simplemente migren porciones según sea necesario, y obtenga lo mejor de ambos mundos.


Proyecto MVC:

Después de haber usado MVC con formularios web durante bastante tiempo, es ciertamente posible y una excelente opción. La nueva funcionalidad y las páginas se pueden agregar fácilmente a las páginas de MVC con un buen diseño arquitectónico como DDD (Service Repository, Dependency Injection, etc.) y las cosas viejas pueden permanecer como están. La combinación de MVC dentro de una página webforms también funciona bien, aunque puede haber algunos problemas menores con la validación JS. Lo recomendaría muchísimo.

Es bastante fácil comenzar con la creación de una aplicación MVC (5 atm) y luego, después de que la plantilla básica esté en funcionamiento, agregue los formularios web antiguos dentro de una carpeta. De esta forma, obtienes la nueva configuración de MVC correctamente y conserva la compatibilidad con versiones anteriores.

  • Puede crear un proyecto MVC y simplemente copiar todas las páginas de Webforms en, por ejemplo, una carpeta. (Es posible simplemente actualizar un proyecto también, me imagino)
  • Configure el enrutamiento para ignorar las solicitudes con ese nombre de carpeta particular en la URL. De esta forma, MVC y formularios web se pueden usar juntos sin problemas en las URL.
  • Las páginas Asp.net WebForms aspx pueden residir dentro de MVC siempre que no estén ubicadas dentro de la carpeta / Views.
  • Vaya con Razor a través de la syntax anterior, puede personalizar los ayudantes de HTML fácilmente y es mucho más limpio.
  • Verifique los estándares y convenciones de MVC, el controlador debe ser muy liviano. No es el código subyacente el que puede contener tanta lógica como necesite.
  • Las vistas no deben contener más que lógica de presentación (sin lógica comercial)
  • Todo nuevo => MVC
  • Los recursos, web.config etc. son utilizables por ambos
  • Los menús no usan los viejos sitemaps en MVC

Usando MVC dentro de una página webforms .aspx:

El siguiente texto está destinado a demostrar cómo puede utilizar MVC desde dentro de una página webforms. (Por ejemplo, dentro de MyPage.aspx) Puede usar acciones / vistas MVC dentro de formularios web con, por ejemplo, ajax para completar una parte de la página o ciertos divs.

Los formularios web que contienen MVC funcionan bien, al menos cuando se agrega una llamada ajax dentro del HTML para llenar un div de MVC.

Dentro de un .aspx

..html & webforms code 

Esto llenará una parte de la página a través de MVC y podrá realizar su MVC limpiamente sin preocuparse por lo que se hace en los formularios web.

WebForms vs. MVC:

En este punto, es probable que esté muy al tanto de las diferencias entre las dos tecnologías, sin embargo, aquí hay una pequeña comparación entre ellas. Ambos tienen sus propósitos y usos. Personalmente prefiero MVC por las cosas que he necesitado hacer, sin embargo, es probable que dependa de lo que esté tratando de lograr.

Si utiliza, por ejemplo, una SOA detrás de ellos, tanto los formularios web como las páginas MVC pueden utilizar la misma lógica comercial. Las formas web pueden ser perjudiciales cuando el código está todo en la página posterior y está vinculado a la interfaz de usuario (sin separación de preocupaciones). Con una architecture sólida y un poco de esfuerzo que se puede reducir sin embargo.

Otras lecturas:

Webforms contra MVC (Proyecto de código)

Diferencia entre ASP.NET WebForms y ASP.NET MVC (un blog)