estrutura da web

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 criar e implantar aplicativos da Web na World Wide Web . As estruturas da Web visam automatizar a sobrecarga associada às atividades comuns realizadas no desenvolvimento da Web . Por exemplo, muitos frameworks da web fornecem bibliotecas para acesso ao banco de dados , frameworks de modelos egerenciamento de sessão e geralmente promovem a reutilização de código . [1] Embora muitas vezes tenham como alvo o desenvolvimento de sites dinâmicos , eles também são aplicáveis ​​a sites estáticos . [2]

História

Como o design da World Wide Web não era inerentemente dinâmico, o hipertexto inicial consistia em arquivos de texto HTML codificados à mão que eram publicados em servidores da web . Quaisquer modificações nas páginas publicadas precisavam 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 refletisse as entradas do usuário. [3]

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 . [4] As implementações mais recentes utilizam processos persistentes entre outras técnicas para reduzir a pegada nos recursos do servidor e oferecer um aumento geral de desempenho. [ citação necessária ]

Em 1995, primeiro surgiram ambientes de desenvolvimento de linguagem/servidor totalmente integrados e novas linguagens específicas da Web foram introduzidas, como ColdFusion , PHP e Active Server Pages . [ citação necessária ]

Embora a grande maioria das linguagens para a criação de páginas da Web dinâmicas tenham bibliotecas para ajudar em tarefas comuns, os aplicativos da Web geralmente requerem bibliotecas específicas para tarefas específicas, como a criação de HTML (por exemplo, Jakarta Server Faces ). [ citação necessária ]

No final da década de 1990, estruturas maduras de "pilha completa" começaram a aparecer, que geralmente reuniam várias bibliotecas úteis para o 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 , [5] CakePHP , [6]e Symfony . [ citação necessária ]

Tipos de arquiteturas de framework

A maioria dos frameworks web são baseados no padrão model-view-controller (MVC) . [ citação necessária ]

Model-view-controller (MVC)

Muitas estruturas seguem o padrão arquitetônico MVC para separar o modelo de dados em regras de negócios (o "controlador") e a interface do usuário (a "visualização"). Isso geralmente é considerado uma boa prática, pois modulariza o código , promove a reutilização de código e permite a aplicação de várias interfaces. Em aplicativos da web, isso permite que diferentes visualizações sejam apresentadas, por exemplo, servindo diferentes páginas da web para navegadores móveis versus desktop, ou fornecendo interfaces de serviço da web legíveis por máquina .

Baseado em push x baseado em pull

A maioria das estruturas 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 exibição para renderizar os resultados. [7] Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter [8] são bons exemplos dessa arquitetura. Uma alternativa para isso é a arquitetura baseada em pull, às vezes também chamada de "baseada em componentes". Essas estruturas começam com a camada de exibição, que pode "puxar" os resultados de vários controladores conforme necessário. Nessa arquitetura, vários controladores podem estar envolvidos em uma única exibição., Tapestry , JBoss Seam , Jakarta Server 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. [ citação necessária ]

Organização de três níveis

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. [9] [10] [11] [12] O banco de dados é normalmente um RDBMS . O aplicativo contém a lógica de negócios, sendo executado em um servidor e se comunica com o cliente usando HTTP . [13] O cliente em aplicativos da web é um navegador da web que executa HTML gerado pela camada de aplicativo. [14] [15] 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". [16] [17]

Aplicativos de estrutura

Os frameworks são construídos para suportar a construção de aplicações de internet baseadas em uma única linguagem de programação, variando em foco desde ferramentas de propósito geral como Zend Framework e Ruby on Rails, que aumentam as capacidades de uma linguagem específica, até pacotes programáveis ​​em linguagem nativa construídos em torno de um aplicativo de usuário específico, como sistemas de gerenciamento de conteúdo (CMS), algumas ferramentas de desenvolvimento móvel e algumas ferramentas de portal. [18]

Estruturas de sites de uso geral

Os frameworks da Web devem funcionar de acordo com as regras arquitetônicas dos navegadores e protocolos como o 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. [ citação necessária ]

Alterações de página do lado do servidor geralmente 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 blocos que parecem um aplicativo de desktop, mas são limitados a JavaScript e executados no navegador do usuário, que pode ter poder de computação limitado. Alguma mistura dos dois é normalmente usada. [19] Os aplicativos que fazem uso intenso de JavaScript e apenas atualizam partes da página 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. [ citação necessária ]

Do lado do servidor

Lado do cliente

Os exemplos incluem Backbone.js , AngularJS , Angular , EmberJS , ReactJS , jQuery UI , Svelte e Vue.js . [20]

Fóruns de discussão, wikis e weblogs

Características

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. [21] 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. [21] Por exemplo, alguns "microframeworks" populares como o Sinatra de Ruby (que inspirou o Express.js ) permitem ganchos de "middleware" antes e depois das solicitações HTTP. Essas funções de middleware podem ser qualquer coisa e permitem que o usuário defina o registro, autenticação e gerenciamento de sessão e redirecionamento. [22]

sistema de modelo da web

Cache

O cache da Web é o armazenamento em cache de documentos da Web para reduzir o uso da 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 no cache se certas condições forem atendidas. Algumas estruturas de aplicativos fornecem mecanismos para armazenar documentos em cache e ignorar vários estágios de preparação da página, como acesso ao banco de dados ou interpretação de modelo. [ citação necessária ]

Segurança

Alguns frameworks web vêm com frameworks de autenticação e autorização , que permitem ao servidor web identificar os usuários do aplicativo e restringir o acesso a funções com base em alguns critérios definidos. O 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. [ citação necessária ]

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

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 objeto-relacional , que mapeia objetos para tuplas . [23]

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 o 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 do aplicativo projete objetos de negócios sem precisar 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. [23]

Outros recursos que os frameworks da Web podem fornecer incluem suporte transacional [24] e ferramentas de migração de banco de dados . [23]

mapeamento de URL

O recurso de mapeamento ou roteamento de URL de uma estrutura é o mecanismo pelo qual a estrutura interpreta as URLs. Algumas estruturas, como Drupal e Django, comparam 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 reconhecerá. Outra técnica é a travessia de grafos como a usada pelo Zope , onde uma URL é decomposta em passos que percorrem um grafo de objeto (de models e views). [ citação necessária ]

Um sistema de mapeamento de URL que usa correspondência de padrões ou reescrita para rotear e manipular solicitações permite que URLs mais curtas e mais " amigáveis " sejam usadas, 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 lembrarem, lerem e escreverem, e fornece aos mecanismos de busca 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 "/page/science" tende a existir por padrão, pois é simplesmente uma forma mais curta da travessia mais longa para "/page/science/physics".]

AJAX

Ajax , abreviação de " JavaScript e XML assíncronos ", é uma técnica de desenvolvimento da Web para criar 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, para que a página inteira não precise ser recarregada sempre que o usuário solicitar uma alteração. O objetivo é aumentar a interatividade, a velocidade, a capacidade de manutenção e a usabilidade de uma página da Web . [25]

Devido à complexidade da programação Ajax em JavaScript, existem vários frameworks Ajax que lidam exclusivamente com o suporte Ajax. Algumas estruturas Ajax são incorporadas como parte de estruturas maiores. Por exemplo, a biblioteca JavaScript jQuery está incluída no Ruby on Rails. [ citação necessária ]

Com o aumento do interesse no desenvolvimento de aplicativos ricos em " Web 2.0 " , a complexidade da programação diretamente em Ajax e JavaScript tornou-se tão aparente que a tecnologia de 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 portas para Python e Ruby na forma de Pyjs e RubyJS seguindo 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. [ citação necessária ]

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. [26]

recursos da web

Vários frameworks RESTful da Web 2.0 mais recentes estão agora fornecendo infraestrutura de arquitetura orientada a recursos (ROA) para construir coleções de recursos em uma espécie de ontologia da Web Semântica , com base nos conceitos do Resource Description Framework (RDF). [ citação necessária ]

Veja também

Referências

  1. ^ Múltiplo (wiki). "Estrutura de aplicativo da Web" . Docforge . Arquivado do original em 23/07/2015.
  2. ^ "Principais geradores de sites estáticos de código aberto" . StaticGen .
  3. ^ "CGI: interface de gateway comum" . Arquivado do original em 2009-04-09.
  4. ^ "CGI". www.ibm.com . Recuperado 2021-05-07 .
  5. ^ "Estrutura Yii PHP" .
  6. ^ "CakePHP".
  7. ^ Thomson, Kris (2003-10-29). "Esclarecimento sobre MVC= Pull e MVC Push" . Recuperado em 29/07/2007 .
  8. ^ "Quais são as diferenças fundamentais entre Struts e JSF" . Struts.apache.org. 14-02-2011 . Recuperado 2013-06-14 .
  9. ^ Microsoft. "Distribuição de três camadas" . Recuperado 2011-09-19 .
  10. ^ Oráculo. "clustering_concepts_10en" (PDF) . Recuperado 2011-09-19 .
  11. ^ Robert R. Perkoski. "Introdução ao Desenvolvimento Web". Arquivado do original em 2013-11-07.
  12. ^ IBM. "Utilizar o Client Access Express num ambiente de três níveis" . Recuperado 2011-09-19 .
  13. ^ Oráculo. "Entendendo a arquitetura de três camadas" . Recuperado 2011-09-19 .
  14. ^ Microsoft. "Arquitetura pragmática: camadas" . Recuperado 2011-09-19 .
  15. ^ Arokia. "Arquitetura da Web de 3 camadas" . Recuperado 2011-09-19 .
  16. ^ "Práticas recomendadas do controlador ASP.NET MVC". Arquivado do original em 2011-10-11 . Recuperado 2011-09-19 .
  17. ^ Jamis Buck. "Controlador Magro, Modelo Gordo". Arquivado do original em 2015-05-16.
  18. ^ "Introdução aos frameworks da Web" . Revista Com Fio . Recuperado 2018-04-02 .
  19. ^ KLIMUSHYN, Mel (6 de abril de 2015). "Arquitetura de Aplicações Web – Lado do Cliente vs. Lado do Servidor". Giro atômico . Recuperado 2016-03-06 .
  20. ^ "AngularJS vs. Backbone.js vs. Ember.js". www.airpair.com . Recuperado 2016-06-04 .
  21. ^ ab Fowler, Martin. "bliki: InversionOfControl". martinfowler. com . Recuperado 2016-03-06 .
  22. ^ Xue, Qiang. "Capital One Engineering - Filosofias que Moldaram Estruturas de Sucesso". www.capitalone.io . Recuperado 2016-03-06 .
  23. ^ abc "Noções básicas de registro ativo" . Ruby on Rails . Recuperado em 20 de março de 2021 . Object Relational Mapping, comumente referido como sua abreviação ORM, é uma técnica que conecta os objetos ricos de um aplicativo a tabelas em um sistema de gerenciamento de banco de dados relacional... O Active Record cria automaticamente métodos para permitir que um aplicativo leia e manipule os dados armazenados dentro suas tabelas.
  24. ^ "Transações de registro ativo" . Ruby on Rails . Recuperado em 20 de março de 2021 .
  25. ^ "O que é AJAX". www.dlsweb.rmit.edu.au . Recuperado 2021-05-07 .
  26. ^ Maximilien, EM (19 de dezembro de 2006). "Web Services on Rails: Usando Ruby e Rails para Desenvolvimento de Web Services e Mashups". IEEE Xplore . Chicago. doi : 10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.