¿Dónde no debemos usar MVC? [duplicar]

7

Tengo un proyecto de curso de ingeniería de software en el que deberíamos diseñar una aplicación web, por lo que he decidido leer sobre los patrones de arquitectura de software.

He leído mucho sobre qué es MVC y su estructura, y también conozco las ventajas de dividir una aplicación en capas.

Pero no puedo encontrar una respuesta a esta pregunta, por lo que aprecio a cualquiera que pueda decirme:

¿Dónde no debemos usar el patrón MVC en una aplicación web?

    
pregunta K327 28.04.2015 - 16:58

1 respuesta

16

En mi experiencia, una aplicación web debería ser trivialmente pequeña para no beneficiarse de la organización y el desacoplamiento que proporciona MVC.

Quizás un poco de explicación sobre la familia MV * de patrones arquitectónicos está en orden.

Los patrones de MV * se refieren principalmente a la Interfaz de usuario . Su propósito principal es proporcionar desacoplamiento entre la interfaz de usuario y el resto de la aplicación.

En Winforms y otra IU controlada por eventos, creamos una interfaz de usuario insertando objetos que representan elementos de formulario, como cuadros de texto, en un contenedor de Formulario, y luego adjuntamos eventos a esos objetos (como Click o LostFocus) para realizar acciones en codigo.

Dibujéunaflechagruesaentrelascajaspararepresentarelhechodequetantolosdatoscomoloscomandossepasandeunladoaotro;estocreaunainterfazdeusuarioqueestáestrechamentevinculadaalrestodelaaplicación.Cualquieraquehayacreadounaaplicacióndeestamanerasabequeesdifícilhacerlagrande,porquerápidamenteterminasconunaplacadecódigodeespagueti.

Pararesolveresteproblema,agregamosunPresenter(avecesllamadoControladorSupervisor)alamezcla,creandoModel-View-Presenter.Estadisposiciónempujalamayorpartedelalógicadelainterfazdeusuariofueradelavistayhaciaelpresentador,loquepermiteunmejormantenimiento.

Observe que he trazado una línea delgada entre el modelo y el presentador, lo que indica que solo los datos se pasan de un lado a otro, no los comandos. Esto proporciona un cierto desacoplamiento entre el modelo y la vista.

Model-View-ViewModel es muy similar, excepto que hay un ViewModel en lugar de un Presenter. Esta disposición se ve con mayor frecuencia en Windows Presentation Foundation y en aplicaciones web de una sola página (SPA) utilizando un marco MVVM como Angular. Además de comando y control, MVVM también se ocupa específicamente de enlace de datos .

Model-View-Controllerseasociaprincipalmenteconaplicacionesweb.EnMVC,loscomandosnoseintercambianrutinariamenteentreelModeloylaVista.Ensulugar,lavistaseenvíaalcontroladormedianteunverboHTTPyelcontroladordecidequéhacerconél.Lamayorpartedelalógicadeldominiosevuelveaintroducirenelmodelo.

Debido a que MVC aún vincula la vista de manera bastante estrecha con los objetos del dominio real, puede insertar un modelo de vista para obtener un direccionamiento indirecto adicional.

Este modelo de vista no es una capa de comando, como lo es en Model-View-ViewModel; es simplemente una capa de traducción de datos entre el modelo y la interfaz de usuario. Un buen ejemplo de esto sería un ViewModel para una factura, que contendría todo lo que necesita para mostrar y actualizar una factura, como nombres, direcciones y elementos de línea de factura. Luego, estos datos se asignarán a objetos de dominio de modelo reales, como clientes, productos, precios, etc.

¿Cuándo usarlos?

Cuando los necesita para el propósito que sirven: para desacoplar la interfaz de usuario del resto del sistema. El sabor que utilice dependerá del tipo de aplicación web que esté creando. Si sus páginas se generan principalmente en el lado del servidor, utilizará MVC. Si sus páginas se generan principalmente en el cliente, utilizando Javascript (como en una aplicación SPA), utilizará MVVM.

    
respondido por el Robert Harvey 28.04.2015 - 18:23

Lea otras preguntas en las etiquetas