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
Download

webservices