Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores – Histórico – Conceitos básicos • Design Pattern • Camadas • MVC – Servidores HTTP – Padrão JEE Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Histórico – Conteúdo estático ( Web 1.0 ) • Apenas páginas Web estáticas – Texto estático, link, imagens, ... . • Servidores Web eram praticamente servidores de arquivos – Contexto era traduzido em um diretório no disco • Conteúdo não era separado da apresentação Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Histórico – Conteúdo dinâmico ( Web 2.0 ) • “Scripts” capazes de gerar conteúdo dinamicamente a partir do processamento de dados • Aplicações complexas – Demandaram a criação de novas funcionalidades nos servidores » Manutenção de estado das aplicações » Performance – Arquiteturas mais complexas » Maior número de componentes de software envolvidos Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Padrões de Projeto – Padrões de projeto são uma descrição sobre como objetos e classes interagem para resolver um problema recorrente. • É um modelo abstrato que pode ser aplicado a vários contextos diferentes • Servem como uma maneira padronizada de “conversar” sobre o design dos projetos Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Padrão de Camadas – – – – Separa um sistema em diversas camadas Cada camada é responsável por uma funcionalidade específica Cada camada só pode se comunicar com as camadas vizinhas Interface entre as camadas é bem definida Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Padrão de Camadas – Projeto Web é geralmente divido nas seguintes camadas: • Camada de Apresentação – Camada que cuida da interface com o usuário » Dividido em Cliente ( Browser ) e Lógica de Apresentação ( muitas vezes no servidor ) • Camada de Aplicação – Busca / Recupera os dados a partir da camada de dados, os processa e envia para a camada de apresentação » Servidor Web e scripts/código/classes de processamento » Divido em Lógica de negócios (Business Logic Layer - BLL) e Acesso a Dados ( Data Access Layer - DAL ) • Camada de Dados – Fonte de dados » Banco de dados Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Padrão MVC ( Model , View, Controller ) – Esse padrão atesta que o Modelo ( Model ) deve estar separado da Apresentação ( View ) e quem faz a coordenação entre os dois é o Controlador • Modelo : Modelo de dados da aplicação e toda a sua manipulação • Apresentação : Como os dados processados são apresentados ao usuário • Controlador: Coordena a interação entre os dois, traduzindo dados, verificando quando dados são atualizados a partir do modelo, assim atualizando a apresentação ou capturando dados informados na apresentação e enviando ao modelo – Essa separação garante independência entre a lógica e os dados do sistema e sua representação para o usuário • Mesmo dados podem ser visualizados como tabela, como gráfico de barras ou como texto. Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores HTTP – São aplicações que proveem funcionalidades e serviços padronizados para uma aplicação web. Dentre eles estão ( nem todos têm ) : • Tratam requisições HTTP – Fazem o tratamento básico das requisições • Proxy reverso / Host virtual – Possibilita que várias aplicações web executem em uma mesma máquina • Cache – Fazem cache de respostas para responder rapidamente a clientes que queiram os mesmos recursos • Sessão de usuário – Controlam as sessões de usuário que podem ser usadas para guardar estados das aplicações Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores HTTP ( Exemplos ) – Apache • Proxy Reverso • Processa scripts como PHP e Python • Serve páginas estáticas – NGINX • Proxy Reverso • Balanceamento de Carga • Serve páginas estáticas – Node.JS • Processa scripts em JavaScript – Precisa de scripts para fazer funcionalidades básicas como servir páginas estáticas Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores JEE – JEE é o padrão Java para Aplicações Web ( Java Enterprise Edition ) • Multi-camadas • Distribuidas – Define • Estrutura do projeto • Conjunto de Objetos, Interfaces e Serviços – – – – – – – – RMI E-mail JMS Web Services Servlets Conectores JSP/JSF ( Java Server Pages / Java Server Faces ) Acesso a Dados Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores JEE – Como JEE é um padrão, há várias implementações disponíveis • Virtualmente, uma aplicação JEE pode ser instalada em qualquer um dos servidores que sigam o padrão JEE. – Servidores disponíveis • • • • • Apache Tomcat Jetty Jboss Oracle Weblogic Glassfish Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web • Servidores JEE – Servlet • É uma Classe/Interface definida pelo padrão JEE que tem por objetivo permitir que uma aplicação Web possa “estender” as capacidades de um Servidor Web JEE • Ela é a classe responsável por atender a requisições – Podem ser vários tipos de requisição – O uso mais comum é atender à requisições HTTP ( usando a classe HttpServlet ) – http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web