Um framework para aplicações web é um framework de software designado para suportar o desenvolvimento de sites web dinâmicos, aplicações Web e serviços Web. O framework destina-se a aliviar a sobrecarga associada a atividades comuns realizadas em desenvolvimento Web. Por exemplo, muitos frameworks fornecem bibliotecas para acesso à banco de dados, frameworks de modelagem e gerenciamento de sessão, e geralmente promovem a reutilização de código.
História
Como o projeto da World Wide Web não foi legadamente dinâmico, antigamente o hipertexto consistia de código programado manualmente em HTML que era publicado em servidores web. Quaisquer modificações para as páginas publicadas precisavam ser realizadas pelo autor do codigo.
Arquiteturas
Modelo Visão Controlador (MVC)
Muitos frameworks seguem o padrão arquitetural Modelo Visão Controlador (MVC) para separar o modelo de dados com as regras de negócio da interface do usuário. Isto geralmente é considerado uma boa prática uma vez que modulariza o código, promove reutilização de código e permite que várias interfaces sejam aplicadas.
Baseada em empurrão versus Baseada em puxão
A maioria dos frameworks MVC seguem a arquitetura baseada em empurrão (push-based). Estes frameworks utilizam ações que realizam o processamento requerido, e então "empurram" os dados para a camada de visão para apresentar os resultados. Struts, Django, Ruby on Rails e Spring MVC são bons exemplos desta arquitetura. Uma alternativa a ela é a arquitetura baseada em puxão (pull-based), algumas vezes chamada de "baseada em componentes". Estes frameworks iniciam com a camada de visão, que pode então "puxar" os resultados de vários controladores conforme necessário. Nesta arquitetura, vários controladores podem estar envolvidos com uma única visão. Struts2, Tapestry, JBoss Seam, Wicket e Stripes são exemplos de arquiteturas baseadas em puxão.
Sistemas de Gerenciamento de Conteúdo
Alguns sistemas de gerenciamento de conteúdo auto-descritivos começaram a se expandir para frameworks de aplicações web de alto nível. Por exemplo, a estrutura do Drupal fornece um núcleo mínimo cuja função é estendida através de módulos que fornecem funções geralmente associadas com frameworks de aplicação web.