2010-08-20 20 views
10

Soy bastante nuevo en la programación en general (realmente comencé hace solo 2 años y medio) y estoy tratando de decidir cuál es la mejor manera de acercarme a una aplicación web que estoy haciendo en trabajo. Un desarrollador sénior en el trabajo me está alentando a ingresar a MVC y después de unas 24 horas de verter sobre blogs, código fuente y otro material sobre el tema, estoy empezando a entender por qué me gustaría usarlo.Filosofía MVC aplicada a webforms

Al mismo tiempo, las aplicaciones existentes de nuestra compañía están escritas como WebForms, así que no quiero hacer algo tan drástico como usar el framework ASP.NET MVC real para hacer mi aplicación (¿sería realmente así de drástica? ?).

Lo que realmente me gustaría saber es si sería práctico o incluso posible hacer WebForms, pero seguiría la filosofía MVC de separación de preocupaciones. ¿De verdad agregaré una capa innecesaria a una página ya complicada .aspx + codebehind?

Todos en la blogósfera parecen pensar que DEBEN usar algún tipo de framework si quieren hacer MVC. ¿Qué en WebForms les está impidiendo hacerlo solo?

Respuesta

9

Si una persona mayor en su equipo lo alienta a buscar en MVC su aplicación y piensa que es una buena jugada, entonces vaya por ella (si esta aplicación es especialmente autónoma).

También puede consultar el patrón MVVM. Esto es lo que muchos han hecho con WebForms y es muy similar al patrón MVC. Al aplicar el patrón MVVM a WebForms, mostraría cómo todavía se puede usar WebForms pero se obtiene gran parte de la bondad que está en el patrón MVC con ASP.Net MVC. Sería una buena manera de mostrarles a otros desarrolladores del equipo qué se puede hacer para hacer que WebForms sea más SOC y comprobable sin abandonar WebForms por completo.

Aquí hay unas cuantas más conexiones en MVVM:

http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

MVVM es también muy popular en aplicaciones de Silverlight ....

También existe el patrón, así MVP . Here's an open source implementation for WebForms. Esta implementación particular es utilizada por DotNetNuke 5.3.

A bit more explanation from MS on MVP and .Net

Cualquiera de ellos es una gran opción si usted quiere tener un mayor control de su código, pero todavía tienen las características WebForms le guste, y/o quiere continuar teniendo por cualquier motivo, como lo que se suena como en su caso de mucho código heredado usándolo.

3

Sí, cada versión de MVC es aún más drásticamente diferente de los formularios web que la anterior.

Si realmente no desea utilizar MVC real, consulte el patrón MVP (Modelo - Vista - Presentador).

+1

Utilizamos MVP en un trabajo previo de la mina, y funcionó muy separando bien la UI de la capa empresarial. Una buena alternativa a MVC si estás atrapado en Webforms. – Martin

3

En mi humilde opinión, creo que deberías hacer el cambio a MVC.

Estas son algunas de las razones que estoy haciendo la transición:

  • Me gustaría ser capaz de controlar mi salida HTML. [Hay ciertos controles web que rinden etiquetas diferentes basadas en el navegador.Además, es bueno tener el control de la ID del cliente.]
  • Me gusta ser capaz de gestionar el estado de mis aplicaciones. [A diferencia de tener WebForms tratando de administrarlo para mí, pasando grandes trozos de datos de lo estrictamente necesario.]
  • Prefiero trabajar de manera controlada y he descubierto que puedo obtener una mejor cobertura de prueba con MVC.
  • He encontrado que las bibliotecas como JQuery funcionan increíblemente bien con MVC; Descubrí que hacer elementos de la interfaz de usuario que eran un problema en WebForms se ha vuelto trivial en MVC.

Por lo tanto, volviendo a su pregunta ... puede crear aplicaciones WebForms que utilizan muchas de las lecciones de MVC. Claro, y si vas a construir aplicaciones de WebForms, lo recomendaría como una buena práctica. ¿Puede aplicar marcos para que se parezca más a MVC? Claro, pero ¿por qué querrías cuando puedes usar MVC?

+0

De acuerdo con todo excepto el primer punto. Escuché que los formularios web 4 son mejores en eso. – Necros

+0

Lo siento, pero debo estar en desacuerdo ... WebControles como el control del Panel hacen ciertas suposiciones sobre lo que deberían producir en diversas condiciones. [Por ejemplo, si recuerdo correctamente, envían un DIV a IE y una tabla a Firefox ... esto podría haber cambiado ya que recuerdo que me encontré con ASP.Net 1.1]. Además, el framework insiste en controlar las identificaciones del lado del cliente para cualquier runat = elementos del servidor. Dependiendo de la aplicación, estos pueden no ser problemas y puedo ser más exigente que la mayoría sobre mi salida HTML. –

+0

Te has perdido el punto más importante desde mi punto de vista.Con MVC, su estado se transfiere como datos, no como estados de página/control. Cuando desee obtener información del usuario, no tiene que indicar explícitamente que desea un cuadro de texto, una casilla de verificación o un menú desplegable, etc. Puede usar las convenciones del generador de entrada para controlar lo que se representa al usuario según su modelo. Esto le permite desacoplar los datos/procesos comerciales de la interfaz de usuario. – Ryan

0

Sí, aún puede usar WebForms y aplicar una filosofía de MVC. En su mayor parte, los formularios web no le impiden aplicar los principios de MVC; simplemente puede llevarte por el camino equivocado. Si todavía es una tienda de WebForms, intente aplicar algunas de las siguientes cosas que están en el "espíritu" de MVC. Esto ayudará a que un cambio futuro de WebForms a MVC sea menos drástico.

  • Usar enrutamiento. En WebForms puede mapear rutas a páginas .aspx en lugar de controladores para obtener agradables Urls sin extensión. Si está utilizando .Net 3.5, necesitará un controlador de ruta personalizado. En 4.0, el enrutamiento es incorporado.

  • Evite utilizar controladores de eventos en su código. Page_Load será suficiente en la mayoría de los casos.

  • Evite utilizar ViewState y Web Controls para mantener su marcado limpio y delgado. Si tiene un botón Enviar en su marcado, escríbalo así < input type="button" en lugar de esto: <asp:Button... Puede exponer propiedades y usar bucles foreach usando <%= %> tal como lo ve en MVC en lugar de usar los controles Etiqueta y Repetidor.

  • Utilice JQuery para configurar controladores de eventos, AJAX y manipulación del DOM del lado del cliente.

  • Adopte el concepto de ViewModel asociando un objeto ViewModel con sus páginas .aspx.

  • Si necesita WebControls, utilice ClientIDMode = "estática" para el control sobre sus identificaciones en el marcado (.Net 4,0)

Cuestiones relacionadas