Mi experiencia con el desarrollo de sitios web dinámicos se limita principalmente a los servlets de Java. He usado Tomcat para desarrollar varios servlets de Java, y no dudaría en decir que soy razonablemente competente con esta tecnología, así como con el lado del cliente HTML / CSS / Javascript para el front-end.
Cuando pienso en "sitio web dinámico", creo que: el usuario solicita una URL con una cadena de consulta, el servidor recibe la consulta y luego procede a generar HTML de forma dinámica para responder a la consulta. A menudo, esto implica la comunicación con una base de datos para obtener los datos solicitados para su visualización. Esta es básicamente la idea detrás del método doGet
de un Java HttpServlet
.
Pero en estos días, escucho cada vez más sobre nuevos marcos como Django y Ruby on Rails, todos los cuales aprovechan la arquitectura del "Controlador de vista de modelo". He leído varios artículos que explican MVC, pero tengo problemas para entender realmente los beneficios. Entiendo que la idea general es separar la lógica de negocios de la lógica de UI, pero no veo que esto sea realmente diferente de la programación web normal. La programación web, por su propia naturaleza, lo obliga a separar la lógica de negocios (programación de servidor de back-end) de la programación de interfaz de usuario (HTML del lado del cliente o Javascript), porque los dos existen en esferas de programación completamente diferentes.
Pregunta: ¿Qué ofrece MVC sobre algo como un servlet de Java y, lo que es más importante, qué es exactamente es MVC y en qué se diferencia de lo que normalmente haría para desarrollar un sitio web dinámico utilizando un enfoque más tradicional como un servlet Java (o incluso algo más antiguo como CGI)? Si es posible, cuando explique MVC, proporcione un ejemplo que ilustre cómo se aplica MVC al proceso de desarrollo web y cómo es beneficioso.