Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003 1 Resumo • • • • Cenários problemáticos (45 m) Uma solução: Web Services (60 m) Um exemplo (45 m) Ferramentas (15 m) 2 Cenários Problemáticos • Vamos tentar bolar soluções para aplicações corporativas avançadas – Cenário 1: Portal de Turismo – Cenário 2: Compra Automática – Cenário 3: Supply Chain Management – Cenário 4: Pesquisa Google via Programa 3 Cenário 1: Portal de Turismo • Implemente um portal realmente automático em que: – O cliente lista seus desejos via HTML – O portal • • • • • • pesquisa alternativas escolhe as melhores faz todas as reservas fatura o cartão de crédito do cliente efetua todos os pagamentos ... automaticamente, sem intervenção humana • Queremos que programas naveguem na Web, não só humanos 4 Cenário 2: Compra automática • Implemente uma aplicação para um distribuidor regional de remédios que: – Automaticamente detecte estoque baixo – Procure o melhor lugar no mundo para comprar os produtos • Preço, prazo de entrega, etc. – Emita a ordem de compra eletronicamente 5 Cenário 3: Supply Chain Management • Implemente aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...) 6 Cenário 4: Pesquisa Google via Programa • Escreva um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google 7 Características comuns aos cenários • Todos são sistemas distribuídos • Todos funcionam na Internet • Vários envolvem achar (navegar) o que se quer antes de usar • Todos envolvem domínios administrativos diferentes (empresas diferentes) – Não temos controle sobre a plataforma, linguagem, etc. do outro lado – O outro lado é essencialmente um sistema legado no qual não podemos mexer 8 Problemas técnicos resultantes 1. 2. 3. 4. Como trocar informação em ambiente heterogêneo para que ambos os lados entendam? Como acessar a funcionalidade remota? Como achar o “outro lado”? Como driblar firewalls na comunicação? 9 Uma Solução – Web Services 1. Como trocar informação em ambiente heterogêneo para que ambos os lados entendam? • • Usar XML para toda a comunicação Usar SOAP fazer RPC 2. Como saber que “métodos” podem ser chamados e com que parâmetros? – Usar uma arquitetura orientada a serviços – Descrever o serviço remoto usando WSDL – Definir ontologias 3. Como achar o “outro lado”? – Usar UDDI para localizar serviços 4. Como driblar firewalls na comunicação? • Usar binding de SOAP para HTTP 10 Uma imagem vale 1000 palavras 11 Vamos descrever melhor a solução ... 12 Usar uma arquitetura orientada a serviços • Serviço oferece uma API na Internet 13 Usar XML para toda a comunicação • Extended Markup Language (XML) • Oferece um formato ASCII para trocar qualquer tipo de informação estruturada • Usa o “estilo” HTML de markup com tags – <pessoa nome=”João”> <frutasFavoritas> <fruta>Manga</fruta> <fruta>Maçã</fruta> <fruta>Uva</fruta> </frutasFavoritas> </pessoa> • Os tags podem ser definidos para criar uma “Aplicação XML” ou “Linguagem XML” 14 Usar SOAP fazer RPC • SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML 15 Descrever o serviço remoto usando WSDL • WSDL = Web Services Description Language • Pronunciado “wisdle” • É uma linguagem XML que contém informação sobre a interface, a semântica, e outros detalhes de chamadas a um Web Service 16 Descrição WSDL inclui • Descrição/formato de mensagens que podem ser passadas – Elementos <types>, <message> • Semântica da passagem de mensagens (Request-only, request-response, responseonly) – Dentro do elemento <portType> • Uma codificação usando um transporte particular – Elemento <binding> • O endpoint do serviço (uma URL) – Dentro do elemento <service> • Veremos um exemplo logo 17 Definir ontologias • Precisamos saber o que as coisas significam • Exemplo: como mandar uma ordem de serviço se não sei o que cada campo deve conter? • Várias organizações definem e padronizam ontologias – ebXML – Oasis 18 Usar UDDI para localizar serviços • UDDI = Universal Description, Discovery, and Integration • Permite cadastrar serviços e localizálos • Não é necessário usar UDDI se o cliente já tiver o documento WSDL – Não usaremos UDDI no exemplo que segue 19 Usar binding de SOAP para HTTP • O binding sobre HTTP, SMTP, etc. permite driblar firewalls com mais facilidade • Qualquer outro protocolo de transporte pode ser usado 20 Finalmente ... O que é um Web Service? • Um Web Service é um ponto de acesso a funcionalidade que pode ser – Localizado dinamicamente – Ter sua interface descoberta automaticamente, porque o serviço sabe se descrever – Ser chamado na Web 21 Um Exemplo – Google • http://www.google.com/apis/ contém tudo que você precisa para acessar o Google como Web Service • Primeiro, vamos rodar o exemplo – Execute o comando: • go “web services” – Compare a saída com o uso do Google pelo browser – (se você não estiver na Web, veja resultados em 22 google\resultados-search) Google - WSDL • Examine GoogleSearch.wsdl • Preste atenção aos elementos – <type> e <message> (formatos) – <portType> (define 3 operações ou “métodos”) – <binding> (usa SOAP sobre HTTP) – <service> (URL para obter serviço) 23 Google – main • Examine o programa GoogleAPIDemo.java • Mostra como usar a classe GoogleSearch para acessar o Web Service 24 Ferramentas - Como desenvolver Web Services? • Tem ferramentas da Sun – JWSDP com muitas APIs: • JAXP, JAXB, JAX-RPC, SAAJ, JAXR, JWSDL • Tem ferramentas da IBM • Tem ferramentas da Microsoft (.NET) • Tem ferramentas de outros lugares – Axis do projeto Apache • WSDL2Java converte WSDL para Java – SOAP::Lite para Perl – etc. 25 Obrigado! 26