Minha experiência no desenvolvimento de sites dinâmicos é limitada principalmente a servlets Java. Eu usei o Tomcat para desenvolver vários servlets Java e não hesitaria em dizer que sou razoavelmente competente com essa tecnologia, bem como com HTML / CSS / Javascript do cliente no front-end.
Quando penso em "site dinâmico", penso: o usuário solicita uma URL com uma string de consulta, o servidor recebe a consulta e passa a produzir HTML dinamicamente para responder à consulta. Isso geralmente envolve a comunicação com um banco de dados para buscar dados solicitados para exibição. Esta é basicamente a idéia por trás do doGet
método de um Java HttpServlet
.
Hoje em dia, porém, estou ouvindo cada vez mais sobre estruturas mais recentes, como Django e Ruby on Rails, que aproveitam a arquitetura "Model View Controller". Eu li vários artigos que explicam o MVC, mas estou tendo problemas para entender realmente os benefícios. Entendo que a idéia geral é separar a lógica de negócios da lógica da interface do usuário, mas não vejo como isso é realmente diferente da programação da web normal. A programação da Web, por sua natureza, obriga a separar a lógica de negócios (programação do servidor de back-end) da programação da interface do usuário (HTML ou Javascript do cliente), porque os dois existem em esferas de programação totalmente diferentes.
Questão: O que o MVC oferece sobre algo como um servlet Java e, mais importante, o que exatamente é MVC e como é diferente do que você faria normalmente para desenvolver um site dinâmico usando uma abordagem mais tradicional, como um servlet Java (ou mesmo algo mais antigo como CGI)? Se possível, ao explicar o MVC, forneça um exemplo que ilustra como o MVC é aplicado ao processo de desenvolvimento da Web e como é benéfico.