Servidores de Aplicações Web Uma Realidade O que são ? O que fazem ? Como funcionam ? Bancos de Dados Servidor de Aplicação: Uma Realidade Atualmente, uma boa parte das empresas baseiam seu funcionamento em um banco de dados, onde suas transações são efetuadas e onde depositam todo o seu lado informatizado. Servidor de Aplicação: Uma Realidade Com a chegada da Internet, iniciou-se uma verdadeira corrida contra o tempo, que resultou no desenvolvimento de sites Web, puramente estáticos e de necessária manutenção, nos quais as organizações passaram a disponibilizar informações sobre suas atividades. Servidor de Aplicação: Uma Realidade Hoje, a Web é um dos meios mais poderosos de comunicação, que tem provocado grandes impactos em qualquer área de atuação profissional. Servidor de Aplicação: Uma Realidade A medida que grandes corporações passaram a colocar algumas de suas aplicações críticas na Web, tornou-se crucial administrar os problemas que o desenvolvimento nesta plataforma pode ocasionar. Servidor de Aplicação: Uma Realidade A Internet impôs um novo modelo de desenvolvimento de aplicações, o desenvolvimento de sistemas/aplicações Web. Servidor de Aplicação: Uma Realidade Com o advento dos servidores de aplicações Web, esse novo modelo de desenvolvimento possibilita a criação e a distribuição de aplicações para a Web cada vez mais complexas. Servidor de Aplicação: Uma Realidade Alguns fatores foram preponderantes para que o uso de servidores de aplicações se tornasse uma realidade. Servidor de Aplicação: Uma Realidade O primeiro fator é que a atual arquitetura de software passou por uma evolução no seu projeto: antigamente o usuário interagia com um programa monolítico que continha o código para gerenciar a aplicação, os dados, a interface do usuário e a comunicação. Servidor de Aplicação: Uma Realidade Segundo fator: Atualmente, existe uma programação totalmente organizada, no que se refere às funcionalidades citadas, a qual possibilita uma divisão bem clara dessas partes no projeto de um software. Servidor de Aplicação: Uma Realidade O segundo fator a favorecer o uso dos servidores de aplicações é a evolução no projeto de interação entre o usuário e os computadores, ou seja a evolução da arquitetura cliente/servidor: - a arquitetura de duas camadas, - a arquitetura de três camadas. Servidor de Aplicação: Uma Realidade O terceiro fator: O amadurecimento da Internet, permitindo uma rápida transmissão de mensagens entre computadores de qualquer parte do mundo e consequentemente, o rápido crescimento de utilização da Web: O advento dos servidores de aplicações se encaixa nesta evolução. Lado Cliente Web O computador cliente utiliza o protocolo TCP/IP e um browser para mostrar os dados e interagir com o usuário e o servidor. 1. Cliente com aplicações cliente/servidor convencional. 2. Cliente com aplicações baseadas na Web. Cliente com aplicações Cliente/Servidor Tradicional Ao executar aplicações, uma máquina-cliente do modelo cliente/servidor tradicional, roda um software que é armazenado localmente, que é uma parte da lógica da aplicação. Alguma aplicação pode ter uma outra parte armazenada e executada num servidor, mas a maioria das aplicações estão no cliente. Cliente com aplicações Cliente/Servidor Tradicional O servidor fornece os dados para a aplicação. Nenhum software adicional é necessário, além do sistema operacional e o da própria aplicação. Cliente com aplicações cliente/servidor na Web O servidor Web fornece o código da execução, assim como os dados para o cliente, quando necessário. O browser é a interface do usuário. O único software que o cliente necessita é o browser, além do sistema operacional. Benefício das aplicações Web Não somente para o desenvolvimento de novas aplicações, mas também na sua distribuição: não existe nada para instalar e para atualizar nas máquinas-cliente. Tudo para a Web, está no lado-servidor. O Papel do Servidor de Aplicações Interface Servidor Web Lógica Dados Servidor de Aplicações BD No lado Servidor O protocolo TCP/IP mantém a comunicação. O servidor Web interage com o browser do usuário no lado-cliente. Um novo software é adicionado – o servidor de aplicações. O servidor de aplicações interage com o banco de dados e com arquivos HTML. No lado Servidor Um típico servidor Web, simplesmente provê e retorna arquivos HTML estáticos. O servidor de aplicação combina modelos, dados oriundos de um banco de dados e outros elementos para criar arquivos HTML, dinamicamente, para que o servidor Web faça o download. O servidor Web não deve saber que está capturando nada além de texto baseado num arquivo HTML. Arquitetura Cliente/Servidor 3-camadas Lógica Interface HTML Servidor Web Plugins Servidor De Aplicações Templates Dados SQL ODBC JDBC Componentes BD Procedures Armazenadas Servidores de Aplicações Web São softwares que agem como intermediário entre um servidor Web e uma base de dados. Consequentemente, de uma forma lógica, entre um browser (no cliente) e uma base de dados (no lado servidor) que tem a informação desejada. Servidor HTTP Um servidor HTTP, não é um servidor de aplicações. A finalidade de um servidor HTTP é mapear uma URL num arquivo físico. Ele fica transformando as requisições do browser, obtendo arquivos do disco e os enviando ao browser. Servidor de Aplicações Um servidor de aplicações é responsável por manter uma lista de serviços que podem ser obtidos (como se fosse uma lista telefônica), e prover um canal de comunicação entre esses serviços e os clientes, sejam eles Web ou não. Servidor HTTP Normalmente, como parte dos serviços providos roda a partir de um browser, existe também um servidor HTTP repassando as requisições ao servidor de aplicações. Servidores de Aplicações Web Os servidores de aplicações Web geram o processo de ligação dos utilizadores de informação aos dados onde estão armazenados. Envolvem tecnologia orientada a objetos na forma de objetos tradicionais e componentes de software. Servidores de Aplicações Web Objetos e componentes (nem todo componente é um objeto) são softwares encapsulados e que podem ser reutilizáveis. O mundo dos servidores de aplicações baseiase fortemente na estrutura e nas interfaces bem definidas dos objetos e dos componentes. Servidores de Aplicações Web Esta arquitetura rigorosa permite a interoperabilidade entre os produtos de vários fornecedores. Fornecem a infra-estrutura de run time (tempo de execução) e serviços necessários para implementar aplicações ou componentes numa arquitetura de várias camadas, que suportam a Web e outras interfaces com o cliente. Servidores de Aplicações Web São partes de uma infra-estrutura que deve permitir que os programadores Web construam aplicações, que trabalhem com uma grande variedade de hardware e softwares-cliente e que possuam funcionalidades para serem integrados com recursos existentes. Servidores de Aplicações Web Por outro lado, têm de ser de fácil utilização e capazes de fornecer mais valor de desenvolvimento do que produtos de midlleware (produtos separados que servem de ligação entre duas aplicações). Servidores de Aplicações Web Devem proporcionar a construção de aplicações mais elaboradas, que assegurem níveis aceitáveis de integridade, confiabilidade, disponibilidade, desempenho e segurança. Servidores de Aplicações Web O servidor de aplicação Web contém a lógica da aplicação e situa-se entre o servidor Web e o banco de dados. Ele controla a conexão com o banco de dados em função das requisições do browser. Servidores de Aplicações Web O ganho obtido com o servidor de aplicação é que a Web (originariamente) é um sistema que não preserva o estado, quando um cliente se conecta nela. O protocolo HTTP que transporta HTML) é um protocolo sem estado e o próprio servidor Web (originariamente) é um servidor que não preserva o estado de conexões. Servidores de Aplicações Web Web é sem estado (stateless): Ou seja, o servidor Web “esquece” a primeira interação com o banco de dados, mesmo se cliente retornar apenas alguns segundos depois. Aquitetura Web: Comunicação com outros elementos Cada um dos componentes desta arquitetura (servidor Web, servidor de aplicações e banco de dados) pode comunicar-se com outros elementos. A comunicação com esses outros elementos não é geralmente baseada em padrões abertos. Arquitetura Web: Comunicação com outros elementos Entretanto, essa comunicação é definida pelo produto (servidor de aplicação específico) que será usado. Elementos adicionais para a comunicação podem ser providos pelos próprios fornecedores dos produtos envolvidos ou podem ser desenvolvidos por terceiros. BD e Servidores de Aplicações: Acesso ao BD Independentemente do servidor de aplicações específico, existem três tipos de conexões a banco de dados: - o acesso nativo, - o acesso via ODBC (Open Database Connectivy), - o acesso via JDBC (Java Database Connectivy). Para cada tipo de acesso, haverá algumas características que definirão como o acesso deverá ser feito. BD e Servidores de Aplicações Acesso Nativo Os bancos de dados de acesso nativo são os bancos de dados textuais e proprietários, isto é aqueles que só podem ser acessados por programas de uma linguagem própria. BDs antigos e com diversas limitações quanto ao acesso, mas que permitem que programas sirvam de intermediários (gateways) entre eles e as aplicações Web. BD e Servidores de Aplicações Acesso via ODBC Os BDs com acesso via ODBC (coleções de funções e estruturas de dados escritas na linguagem C) correspondem à grande maioria existente no mercado. ODBC é uma maneira fácil de se obter a comunicação com o banco de dados, mas existe a limitação de que a máquina com ODBC (no cliente ou no servidor), seja uma máquina Windows. BD e Servidores de Aplicações Acesso JDBC Os bancos de dados mais modernos possuem acesso via JDBC, que é uma solução orientada a objetos, com vantagem de poder funcionar em qualquer sistema operacional que possua uma JVM (Java Virtual Machine). JDBC encapsula as funcionalidades de um BD em um conjunto de classes que permitem o acesso nativo ao banco e a comunicação via SQL. Conclusões O momento de disponibilizar informações puramente estáticas terminou. O momento agora é de usufruir as vantagens que a Internet e a Web podem proporcionar no desenvolvimento de aplicações. Um novo modelo de desenvolvimento de aplicações, baseado em servidores de aplicações Web, é agora existente. Conclusões Ao deixar claro o nível de separação entre o servidor Web e a camada de acesso aos dados (servidor de aplicação), podemos suprir a necessidade de quem deseja disponibilizar aplicações Web. Ao crescerem em complexidade, essas aplicações, passam a requerer melhor gerenciamento, ao contrário de aplicações simples, que podem se desenvolvidas através de linguagens de scripts, serem menos dispendiosas e de mais fácil implementação. Conclusões Ambiente computacional capaz de reduzir o TCO (Total Cost of Ownership) nas empresas. - máquinas clientes não precisam de alto poder de processamento e armazenamento, - economia com licenças de utilização de softwares. Conclusões Atualizações do sistema/aplicação só precisa ser feita no servidor de aplicação e automaticamente é atualizada para todos que acessarem tal aplicação. Conclusões O desenvolvimento Web pode assemelhar-se ao desenvolvimento de sistemas usando ferramentas GUI, porém com maior flexibilidade, pois a aplicação pode ser acessada remotamente sem que haja a necessidade de instalar um software-cliente no usuário final. Conclusões O papel principal de um servidor de aplicação é dar suporte a sites Web que usem dados dinâmicos, ou seja, dados oriundos de um banco de dados, arquivosmodelos, scripts e de outros elementos, para criar arquivos HTML dinamicamente. O servidores de aplicações provêem a informação formatada para ser entregue aos usuários. Produtos no Mercado Servidor de Aplicações Web Integrator da ITX Information Technology Experts. Sistema SIGES, desenvolvido e disponibilizado pela INFOX Sistemas de Informação Ltda. Produtos no Mercado WebLogic, BEA WebSphere, IBM Orbix E2A J2EE Edition, IONA JBOSS, ... .... , Inprise Referências Feiler, Jesse. Application Servers: Powering the Web-Based Enterprise. Morgan Kaufmann, 2000. Fournier, Roger. A Methodology for Client/Server and Web Application Development . Yourdon Press, 1999. Referências Moraes, Geraldo Leite. Aplicações Web. Monografia em Processamento de Dados, UNIT, Aracaju, 1999. Developer’s Magazine [on line]. www.developers.com.br. Java 2 Enterprise Edition (J2EE) Especificação da Sun Microsystems, para a construção de plataformas com servidor de aplicações. J2EE oferece, numa só arquitetura, todos os recursos necessários para a construção de aplicações distribuídas multi-camadas para a Internet. Engloba um número de especificações para a construção de páginas dinâmicas, acesso à bancos de dados, monitores de transação, serviço de troca de mensagens, coordenação de objetos distribuídos e, também, Web Services. www.java.sun.com/j2ee contém toda a especificação, tutoriais, artigos, ...