260 likes | 323 Views
Web Services Uma Introdução. Jacques P. Sauvé DSC/UFCG 2003. Resumo. Cenários problemáticos (45 m) Uma solução: Web Services (60 m) Um exemplo (45 m) Ferramentas (15 m). Cenários Problemáticos. Vamos tentar bolar soluções para aplicações corporativas avançadas
E N D
Web ServicesUma Introdução Jacques P. Sauvé DSC/UFCG 2003
Resumo • Cenários problemáticos (45 m) • Uma solução: Web Services (60 m) • Um exemplo (45 m) • Ferramentas (15 m)
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
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 programasnaveguem na Web, não só humanos
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
Cenário 3: Supply Chain Management • Implemente aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...)
Cenário 4: Pesquisa Google via Programa • Escreva um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google
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 administrativosdiferentes (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
Problemas técnicos resultantes • 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?
Uma Solução – Web Services • 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 • 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 • Como achar o “outro lado”? • Usar UDDI para localizar serviços • Como driblar firewalls na comunicação? • Usar binding de SOAP para HTTP
Usar uma arquitetura orientada a serviços • Serviço oferece uma API na Internet
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”
Usar SOAP fazer RPC • SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML
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
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, response-only) • 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
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
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
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
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
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 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)
Google – main • Examine o programa GoogleAPIDemo.java • Mostra como usar a classe GoogleSearch para acessar o Web Service
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.