Estrutura da web - Web framework

Uma estrutura da web ( WF ) ou estrutura de aplicativo da web ( WAF ) é uma estrutura de software projetada para oferecer suporte ao desenvolvimento de aplicativos da web, incluindo serviços da web , recursos da web e APIs da web . As estruturas da Web fornecem uma maneira padrão de construir e implantar aplicativos da Web na World Wide Web . Os frameworks da web têm como objetivo automatizar a sobrecarga associada às atividades comuns realizadas no desenvolvimento da web . Por exemplo, muitas estruturas da web fornecem bibliotecas para acesso a banco de dados , estruturas de modelagem e gerenciamento de sessão , e muitas vezes promovem a reutilização de código . Embora muitas vezes visem o desenvolvimento de sites dinâmicos , também se aplicam a sites estáticos .

História

Como o design da World Wide Web não era inerentemente dinâmico, o hipertexto inicial consistia em HTML codificado à mão que era publicado em servidores da web . Quaisquer modificações nas páginas publicadas precisam ser realizadas pelo autor das páginas. Em 1993, o padrão Common Gateway Interface (CGI) foi introduzido para fazer a interface de aplicativos externos com servidores da web, para fornecer uma página da web dinâmica que refletia as entradas do usuário.

No entanto, as implementações originais da interface CGI geralmente tinham efeitos adversos na carga do servidor, porque cada solicitação iniciava um processo separado . Implementações mais recentes utilizam processos persistentes entre outras técnicas para reduzir a pegada nos recursos do servidor e oferecer um aumento de desempenho geral.

Em 1995, os ambientes de desenvolvimento de servidor / linguagem totalmente integrados surgiram pela primeira vez e novas linguagens específicas da web foram introduzidas, como ColdFusion , PHP e Active Server Pages .

Embora a grande maioria das linguagens para a criação de páginas da web dinâmicas tenham bibliotecas para ajudar nas tarefas comuns, os aplicativos da web geralmente requerem bibliotecas específicas para tarefas particulares, como a criação de HTML (por exemplo, JavaServer Faces ).

No final da década de 1990, começaram a aparecer estruturas maduras de "pilha completa", que geralmente reuniam várias bibliotecas úteis para desenvolvimento da web em uma única pilha de software coesa para os desenvolvedores da web usarem. Exemplos disso incluem ASP.NET , Java EE , WebObjects , web2py , OpenACS , Catalyst , Mojolicious , Ruby on Rails , Laravel , Grails , Django , Zend Framework , Sails.js , Yii , CakePHP e Symfony .

Tipos de arquiteturas de framework

A maioria dos frameworks da web é baseada no padrão model – view – controller (MVC) .

Model-view-controller (MVC)

Muitas estruturas seguem o padrão de arquitetura MVC para separar o modelo de dados com regras de negócios da interface do usuário . Isso geralmente é considerado uma boa prática, pois modulariza o código, promove a reutilização do código e permite que várias interfaces sejam aplicadas. Em aplicativos da web, isso permite que diferentes visualizações sejam apresentadas, como páginas da web para humanos e interfaces de serviço da web para aplicativos remotos.

Baseado em push vs. baseado em pull

A maioria dos frameworks MVC segue uma arquitetura baseada em push, também chamada de "baseada em ação". Essas estruturas usam ações que fazem o processamento necessário e, em seguida, "enviam" os dados para a camada de visualização para renderizar os resultados. Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter são bons exemplos dessa arquitetura. Uma alternativa é a arquitetura baseada em pull, às vezes também chamada de "baseada em componentes". Essas estruturas começam com a camada de visualização, que pode "puxar" os resultados de vários controladores conforme necessário. Nesta arquitetura, vários controladores podem estar envolvidos em uma única visualização. Lift , Tapestry , JBoss Seam , JavaServer Faces e Wicket são exemplos de arquiteturas baseadas em pull. Play , Struts , RIFE e ZK têm suporte para chamadas de controlador de aplicativo baseadas em push e pull.

Organização de três camadas

Na organização de três camadas , os aplicativos são estruturados em torno de três camadas físicas: cliente, aplicativo e banco de dados. O banco de dados normalmente é um RDBMS . O aplicativo contém a lógica de negócios, rodando em um servidor e se comunica com o cliente usando HTTP . O cliente em aplicativos da web é um navegador da web que executa HTML gerado pela camada do aplicativo. O termo não deve ser confundido com MVC, onde, ao contrário da arquitetura de três camadas, é considerado uma boa prática manter a lógica de negócios longe do controlador, a "camada intermediária".

Aplicativos de framework

Frameworks são construídos para suportar a construção de aplicativos de internet baseados em uma única linguagem de programação, variando em foco de ferramentas de propósito geral, como Zend Framework e Ruby on Rails, que aumentam as capacidades de uma linguagem específica, para pacotes programáveis ​​em linguagem nativa construídos em torno um aplicativo de usuário específico, como sistemas de gerenciamento de conteúdo , algumas ferramentas de desenvolvimento móvel e algumas ferramentas de portal.

Estruturas de site de uso geral

As estruturas da Web devem funcionar de acordo com as regras de arquitetura de navegadores e protocolos como HTTP , que não tem estado . As páginas da Web são servidas por um servidor e podem ser modificadas pelo navegador usando JavaScript . Qualquer abordagem tem suas vantagens e desvantagens.

As alterações de página do lado do servidor normalmente exigem que a página seja atualizada, mas permitem que qualquer idioma seja usado e mais poder de computação seja utilizado. As alterações do lado do cliente permitem que a página seja atualizada em pequenos pedaços, parecidos com um aplicativo de desktop, mas são limitados a JavaScript e executados no navegador do usuário, que pode ter capacidade de computação limitada. Normalmente, é usada alguma combinação dos dois. Os aplicativos que fazem uso intenso de JavaScript são chamados de aplicativos de página única e normalmente usam uma estrutura da Web JavaScript do lado do cliente para organizar o código.

Lado do servidor

Do lado do cliente

Exemplos incluem Backbone.js , AngularJS , angular , EmberJS , ReactJS e Vue.js .

Dash é uma estrutura Python , R e Julia de código aberto para a construção de aplicativos analíticos baseados na web . O mesmo JavaScript (ou seja, React) é usado no lado do cliente, independentemente da linguagem de back-end.

Fóruns de discussão, wikis e weblogs

Recursos

As estruturas geralmente definem o fluxo de controle de um programa e permitem que o usuário da estrutura "se conecte" a esse fluxo expondo vários eventos. Esse padrão de design de " inversão de controle " é considerado um princípio definidor de uma estrutura e beneficia o código ao impor um fluxo comum para uma equipe que todos podem personalizar de maneiras semelhantes. Por exemplo, alguns "microframeworks" populares como o Sinatra de Ruby (que inspirou Express.js ) permitem ganchos de "middleware" antes e depois das solicitações HTTP. Essas funções de middleware podem ser qualquer coisa e permitem ao usuário definir o registro, autenticação e gerenciamento de sessão e redirecionamento.

Sistema de template da web

Cache

Cache da Web é o armazenamento em cache de documentos da Web para reduzir o uso de largura de banda , a carga do servidor e o " atraso " percebido . Um cache da web armazena cópias de documentos que passam por ele; solicitações subsequentes podem ser atendidas do cache se certas condições forem atendidas. Algumas estruturas de aplicativos fornecem mecanismos para armazenar documentos em cache e contornar vários estágios de preparação da página, como acesso ao banco de dados ou interpretação do modelo.

Segurança

Algumas estruturas da web vêm com estruturas de autenticação e autorização , que permitem ao servidor da web identificar os usuários do aplicativo e restringir o acesso a funções com base em alguns critérios definidos. Drupal é um exemplo que fornece acesso baseado em função a páginas e fornece uma interface baseada na web para criar usuários e atribuir-lhes funções.

Acesso, mapeamento e configuração de banco de dados

Muitas estruturas da web criam uma API unificada para um back-end de banco de dados, permitindo que os aplicativos da web funcionem com uma variedade de bancos de dados sem alterações de código e permitindo que os programadores trabalhem com conceitos de nível superior. Além disso, algumas estruturas orientadas a objetos contêm ferramentas de mapeamento para fornecer mapeamento relacional de objetos , que mapeia objetos para tuplas .

Algumas estruturas minimizam a configuração de aplicativos da web por meio do uso de introspecção e / ou seguindo convenções bem conhecidas. Por exemplo, muitos frameworks Java usam Hibernate como uma camada de persistência, que pode gerar um esquema de banco de dados em tempo de execução capaz de persistir as informações necessárias. Isso permite que o designer de aplicativos projete objetos de negócios sem a necessidade de definir explicitamente um esquema de banco de dados. Frameworks como Ruby on Rails também podem funcionar ao contrário, ou seja, definir propriedades de objetos de modelo em tempo de execução com base em um esquema de banco de dados.

Outros recursos que as estruturas da web podem fornecer incluem suporte transacional e ferramentas de migração de banco de dados .

Mapeamento de URL

O mapeamento de URL de uma estrutura ou facilidade de roteamento é o mecanismo pelo qual a estrutura interpreta URLs. Algumas estruturas, como Drupal e Django, combinam a URL fornecida com padrões pré-determinados usando expressões regulares , enquanto outras usam técnicas de reescrita para traduzir a URL fornecida em uma que o mecanismo subjacente reconheça. Outra técnica é a de travessia de gráfico , como a usada pelo Zope , onde uma URL é decomposta em etapas que percorrem um gráfico de objeto (de modelos e visualizações).

Um sistema de mapeamento de URL que usa correspondência de padrões ou reescrita para rotear e lidar com solicitações permite o uso de " URLs mais curtos e amigáveis ", aumentando a simplicidade do site e permitindo uma melhor indexação pelos mecanismos de pesquisa. Por exemplo, um URL que termina com "/page.cgi?cat=science&topic=physics" pode ser alterado para simplesmente "/ page / science / physics". Isso torna a URL mais fácil para as pessoas lembrar, ler e escrever, e fornece aos mecanismos de pesquisa melhores informações sobre o layout estrutural do site. Uma abordagem de travessia de gráfico também tende a resultar na criação de URLs amigáveis. Um URL mais curto, como "/ página / ciência" tende a existir por padrão, pois é simplesmente uma forma mais curta de travessia mais longa para "/ página / ciência / física".

AJAX

Ajax , abreviação de " Asynchronous JavaScript and XML ", é uma técnica de desenvolvimento da web para a criação de aplicativos da web. A intenção é fazer com que as páginas da web pareçam mais responsivas trocando pequenas quantidades de dados com o servidor nos bastidores, de modo que a página inteira não precise ser recarregada cada vez que o usuário solicitar uma alteração. O objetivo é aumentar a interatividade, velocidade e usabilidade de uma página da web .

Devido à complexidade da programação Ajax em JavaScript, existem vários frameworks Ajax que lidam exclusivamente com o suporte Ajax. Alguns frameworks Ajax são até integrados como parte de frameworks maiores. Por exemplo, a biblioteca jQuery JavaScript está incluída no Ruby on Rails.

Com o aumento do interesse no desenvolvimento de aplicativos da web ricos em " Web 2.0 " , a complexidade da programação diretamente em Ajax e JavaScript tornou-se tão aparente que a tecnologia do compilador entrou em cena para permitir que os desenvolvedores codifiquem em linguagens de alto nível, como Java, Python e Rubi. O primeiro desses compiladores foi o Morfik, seguido pelo Google Web Toolkit , com portes para Python e Ruby na forma de Pyjs e RubyJS algum tempo depois. Esses compiladores e suas bibliotecas de conjunto de widgets associadas tornam o desenvolvimento de aplicativos Ajax de mídia avançada muito mais semelhante ao desenvolvimento de aplicativos de desktop.

serviços web

Algumas estruturas fornecem ferramentas para criar e fornecer serviços da web. Esses utilitários podem oferecer ferramentas semelhantes ao restante do aplicativo da web.

Recursos da web

Uma série de estruturas RESTful Web 2.0 mais recentes agora fornecem infraestrutura de arquitetura orientada a recursos (ROA) para a construção de coleções de recursos em uma espécie de ontologia da Web Semântica , com base nos conceitos da Resource Description Framework (RDF).

Veja também

Referências