Pregunta

Recientemente he estado investigando un poco sobre los diferentes tipos de arquitecturas de vista de modelo y necesito decidir cuál seguir para el futuro desarrollo interno.Como actualmente estoy trabajando en una tienda de Microsoft que tiene conocimientos de ASP.NET, parece que mis opciones están entre ASP.NET MVC y WCSF (Monorail probablemente esté fuera de servicio ya que Microsoft no lo admitiría).

Despues de leer el marco ASP.NET MVC, utilizando WCSF como criterio, recogí los siguientes puntos:

  • ASP.NET MVC no puede utilizar controles web que dependan de devoluciones de datos, mientras que WCSF sí puede.
  • Tiene más control sobre las URL en un sitio ASP.NET MVC que en un sitio WCSF.
  • Un sitio ASP.NET MVC probablemente será más fácil de probar que una versión WCSF equivalente.
  • Parece que WCSF todavía usa el código subyacente para controlar los eventos de la interfaz de usuario en algunas circunstancias, pero ASP.NET MVC no lo permite.

¿Cuáles son algunas de las otras consideraciones?
¿Qué he entendido mal?
¿Hay alguien que haya utilizado ambos marcos y tenga consejos de cualquier manera?

¿Fue útil?

Solución

ASP.NET MVC no puede utilizar controles web que dependan de devoluciones de datos, mientras que WCSF sí puede.

Debería pensar en WCSF como una guía sobre cómo utilizar la infraestructura de WebForms existente, especialmente introduciendo Model-View-Presenter para ayudar a imponer la separación de preocupaciones.También aumenta la capacidad de prueba del código resultante.

Tiene más control sobre las URL en un sitio ASP.NET MVC que en un sitio WCSF.

Si puede apuntar a 3.5 SP1, puede utilizar el nuevo sistema de enrutamiento con un sitio WebForms tradicional.El enrutamiento no se limita a MVC.Por ejemplo, eche un vistazo a Dynamic Data (que también se incluye en 3.5 SP1).

Un sitio ASP.NET MVC probablemente será más fácil de probar que una versión WCSF equivalente.

Esto es cierto porque utiliza las nuevas clases de abstracciones para HttpContext, HttpRequest, HttpResponse, etc.No hay nada inherentemente más comprobable en el patrón MVC que el patrón MVP.Ambos son casos de "presentación separada" y ambos aumentan la capacidad de prueba.

Parece que WCSF todavía usa el código subyacente para controlar los eventos de la interfaz de usuario en algunas circunstancias, pero ASP.NET no lo permite.

En Model-View-Presenter, dado que el mundo exterior interactúa con las vistas (es decir, la URL apunta a la vista), las vistas responderán naturalmente a estos eventos.Deben ser lo más sencillos posible, ya sea llamando al presentador u ofreciendo eventos a los que el presentador pueda suscribirse.

Model-View-Controller supera esta limitación al hacer que el mundo exterior interactúe con los controladores.Esto significa que sus puntos de vista pueden ser mucho más "tontos" sobre cosas que no son de presentación.

En cuanto a cuál debería utilizar, creo que la respuesta se reduce a cuál se adapta mejor a los objetivos de su proyecto.A veces, será preferible la disponibilidad de WebForms y de proveedores de control de terceros y, en algunos casos, la simplicidad pura y el control HTML detallado favorecerán a MVC.

Otros consejos

No quiero iniciar una guerra incendiaria, pero encontré que el WCSF es bastante complicado.La elegancia y simplicidad de MVC superan a MVP, que se siente como un patrón recién injertado en formularios web.

Optamos por el WCSF después de hacer exactamente la misma evaluación.Sentimos que el patrón MVP nos brindaba más opciones, es decir, la posibilidad de utilizar controles del servidor.Nuestro equipo de desarrollo está formado principalmente por programadores de diversas disciplinas, es decir, C++, Biztalk y web, etc.pero todos se habían centrado principalmente en el desarrollo del tipo MS, por lo que la curva de aprendizaje para adoptar los patrones no fue tanto para nuestro equipo.

Estamos más que contentos con nuestra elección.

También puede considerar los antecedentes de sus desarrolladores (si ya se ha identificado alguno).

Si provienen de un entorno estricto de asp.net, se sentirán más cómodos con WCSF (aunque en mi experiencia, todavía les tomó algunas semanas sentirse realmente cómodos con MVP).

Si provienen de Java/rails, o han usado otras arquitecturas MVC antes, entonces obviamente estarán más felices allí (y en mi experiencia se vuelven muy presumidos con cualquier cosa que no sea MVC).

MVC es un paradigma mucho más simple y más similar a cómo todos los demás marcos realizan el desarrollo web.WebForms consiste simplemente en demasiadas pruebas y demasiadas capas de abstracción para intentar lograr la simplicidad.En mi humilde opinión, MVC será la arquitectura ASP.NET predeterminada dentro de unos años, a medida que más y más personas se den cuenta de la simplicidad y facilidad de desarrollo y prueba que trae consigo.He estado desarrollando MVC durante un año y medio y nunca pensaría en volver a WebForms en un nuevo proyecto.

Un sitio ASP.NET MVC probablemente será más fácil de probar que una versión WCSF equivalente.

Esto es cierto porque usa las nuevas clases de abstracciones para httpcontext, httprequest, httpponse, etc.No hay nada inherentemente más comprobable sobre el patrón MVC que el patrón MVP.Ambos son casos de "presentación separada", y ambos aumentan la capacidad de prueba.

Esto probablemente sea discutible, pero hay literatura que sugiere que usar un modelo de diseño MVP es más fácil de realizar pruebas unitarias que un modelo de diseño MVC si tiene Vistas repletas de lógica.En resumen, en el modelo de diseño MVP, el Presentador maneja el trabajo que podría manejar la Vista en el modelo de diseño MVC.La lógica que podría contener la vista MVC no facilita las pruebas unitarias.Aquí hay algunas referencias a la literatura que he leído que cubriría este concepto y las razones por las que mantener la vista iluminada es mejor por muchas razones, incluida la facilitación de las pruebas unitarias.

http://martinfowler.com/eaaDev/uiArchs.html

http://martinfowler.com/eaaDev/SupervisingPresenter.html

http://martinfowler.com/eaaDev/PassiveScreen.html

¿Por qué no adjuntar ambos a Northwind y ver cuál se adapta mejor a usted y a su situación?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top