1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003.

26
1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003

Transcript of 1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003.

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 Services1. 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!