Download - Web Services Uma Introdução
1
Web ServicesUma Introdução
Jacques P. Sauvé
DSC/UFCG
2003
2
Resumo
• Cenários problemáticos (45 m)
• Uma solução: Web Services (60 m)
• Um exemplo (45 m)
• Ferramentas (15 m)
3
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
4
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
5
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
6
Cenário 3: Supply Chain Management
• Implemente aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...)
7
Cenário 4: Pesquisa Google via Programa
• Escreva um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google
8
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
9
Problemas técnicos resultantes
1. Como trocar informação em ambiente heterogêneo para que ambos os lados entendam?
2. Como acessar a funcionalidade remota?3. Como achar o “outro lado”?4. Como driblar firewalls na comunicação?
10
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
11
Uma imagem vale 1000 palavras
12
Vamos descrever melhor a solução ...
13
Usar uma arquitetura orientada a serviços
• Serviço oferece uma API na Internet
14
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”
15
Usar SOAP fazer RPC
• SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML
16
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
17
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
18
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
19
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
20
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
21
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
22
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)
23
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)
24
Google – main
• Examine o programa GoogleAPIDemo.java
• Mostra como usar a classe GoogleSearch para acessar o Web Service
25
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.
26
Obrigado!