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 HTML / CSS / Javascript del lado del cliente para el front-end.
Cuando pienso en "sitio web dinámico", pienso: 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. Esto a menudo 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 doGet
método de Java HttpServlet
.
Pero en estos días, escucho cada vez más sobre marcos más nuevos 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 estoy teniendo problemas para comprender realmente los beneficios. Entiendo que la idea general es separar la lógica de negocios de la lógica de la interfaz de usuario, pero no veo cómo esto es algo 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 del lado del servidor del lado del servidor) de la programación de la interfaz de usuario (HTML o Javascript del lado del cliente), 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 MVC y cómo es diferente de lo que normalmente haría para desarrollar un sitio web dinámico utilizando un enfoque más tradicional como un servlet de Java (o incluso algo más viejo como CGI)? Si es posible, al explicar MVC, proporcione un ejemplo que ilustre cómo MVC se aplica al proceso de desarrollo web y cómo es beneficioso.