Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP...
Transcript of Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP...
![Page 1: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/1.jpg)
Web Services SOAP
Introdução
1
![Page 2: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/2.jpg)
Cenários Problemáticos
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
2
![Page 3: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/3.jpg)
Cenário 1: Portal de Turismo
Implementar 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
Ou seja, queremos que programas naveguem na Web, não só humanos
3
![Page 4: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/4.jpg)
Cenário 2: Compra automática
Implementar 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
4
![Page 5: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/5.jpg)
Cenário 3: Supply Chain
Management
Implementar aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...)
5
![Page 6: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/6.jpg)
Cenário 4: Pesquisa Google via
Programa
Escrever um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google
6
![Page 7: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/7.jpg)
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
7
![Page 8: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/8.jpg)
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?
8
![Page 9: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/9.jpg)
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
9
Modelo de dados que
representa um
conjunto de conceitos
de um domínio e os
relacionamentos
entre estes.
Usada para realizar
inferência sobre os
objetos do domínio.
![Page 10: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/10.jpg)
Uma imagem vale 1000 palavras
10
![Page 11: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/11.jpg)
Vamos descrever melhor a
solução ...
11
![Page 12: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/12.jpg)
Usar uma arquitetura orientada a
serviços Serviço oferece uma API na Internet
12
![Page 13: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/13.jpg)
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”
13
![Page 14: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/14.jpg)
Usar SOAP fazer RPC
SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML
14
![Page 15: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/15.jpg)
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
15
![Page 16: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/16.jpg)
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
16
![Page 17: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/17.jpg)
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
17
![Page 18: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/18.jpg)
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
18
![Page 19: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/19.jpg)
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
19
![Page 20: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/20.jpg)
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
20
![Page 21: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/21.jpg)
21
![Page 22: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/22.jpg)
Situações de uso de SOAP
Processamento e chamadas assíncronos:
– aplicação precisa de um nível garantido de confiabilidade e segurança para a troca de mensagens;
Contratos formais:
– ambos os lados (fornecedor e consumidor) têm que concordar com o formato de intercambio de dados, onde SOAP fornece especificações rígidas para esses tipo de interação;
Operações stateful:
– a aplicação precisa de informação contextual e gerenciamento de estado com coordenação e segurança
22
![Page 23: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/23.jpg)
Web Service SOAP
![Page 24: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/24.jpg)
Tecnologias Relacionadas
Web Services
SOAP (Simple Object Access Protocol)
HTTP (HyperText Markup Language)
UDDI (Universal Description, Discovery and Integration)
XML (eXtensible Markup Language)
XSD (XML Schema Documents)
![Page 25: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/25.jpg)
SOAP
Protocolo elaborado para facilitar a chamada remota de funções via Internet, permitindo que dois programas se comuniquem de uma maneira tecnicamente muito semelhante à invocação de páginas Web.
25
![Page 26: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/26.jpg)
SOAP
Vantagens sobre outras maneiras de chamar funções remotamente como DCOM, CORBA ou diretamente no TCP/IP:
– simples de implementar, testar e usar
– padrão da indústria
– Usa mesmos padrões da Web :
• comunicação via HTTP;
• mesmos protocolos de autenticação e encriptação;
• manutenção de estado da mesma forma;
• normalmente implementado pelo próprio servidor Web.
26
![Page 27: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/27.jpg)
SOAP
Vantagens sobre outras maneiras de chamar funções remotamente como DCOM, CORBA ou diretamente no TCP/IP:
– Atravessa “firewalls” e roteadores, que “pensam” que é uma comunicação HTTP.
– Tanto os dados como as funções são descritas em XML, o que torna o protocolo não apenas fácil de usar como também muito robusto.
– É independente do sistema operacional e CPU.
– Pode ser usado tanto de forma anônima como com autenticação (nome/senha).
27
![Page 28: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/28.jpg)
Pedidos SOAP
Os pedidos SOAP podem ser feitos em três padrões: GET, POST e SOAP.
– GET e POST idênticos aos pedidos feitos por navegadores Internet.
– SOAP padrão semelhante ao POST, mas com pedidos em XML que permitem recursos mais sofisticados como passar estruturas e arrays.
As respostas são sempre em XML.
O XML descreve perfeitamente os dados em tempo de execução e evita problemas causados por mudanças nas funções, já que os objetos chamados têm a possibilidade de sempre validar os argumentos das funções, tornando o protocolo muito robusto.
28
![Page 29: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/29.jpg)
WSDL
Web Services Definition Language
29
![Page 30: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/30.jpg)
WSDL
Uma definição:
– A WSDL é uma especificação que permite descrever Web Services segundo um formato XML.
![Page 31: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/31.jpg)
Descrição dos Serviços
Através da descrição do Web Services o provedor de serviços publica as especificações necessárias para o cliente invocar um serviço.
![Page 32: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/32.jpg)
Independência de plataforma
O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor de serviços está baseado.
A descrição do serviço em conjunto com a infra-estrutura SOAP adjacente encapsula detalhes tanto no lado do cliente quanto no lado do provedor.
![Page 33: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/33.jpg)
Em suma...
Um documento WSDL é um documento XML que descreve Web Services como um conjunto de pontos de serviço (endpoints) que operam baseados em trocas de mensagens.
As operações e mensagens relativas a um serviço são descritas de forma abstrata e em seguida ligados a protocolos de rede e formatos de mensagens concretos como o objetivo de definir um ponto de serviço .
![Page 34: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/34.jpg)
WSDL é extensível
WSDL é uma linguagem extensível e permite a descrição de pontos de serviço e suas mensagens independentemente de que formato de mensagens ou protocolo de rede é utilizado na comunicação.
![Page 35: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/35.jpg)
Linguagem para definição de web
service - WSDL
Descreve perfeitamente os objetos e métodos disponíveis, através de páginas XML acessíveis através da Web.
Quem publicar um serviço, cria também estas páginas.
Quem quiser chamar o serviço, pode usar estas páginas como “documentação” de chamada e também usadas antes de chamar as funções para verificar se alguma coisa mudou.
35
![Page 36: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/36.jpg)
WSDL – Web Services Definition Language
A camada de integração introduzida pela estrutura de web services estabelece um padrão, reconhecido e com interface programática suportada.
WSDL permite a comunicação entre essas camadas ao fornecer descrições padronizadas.
36
![Page 37: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/37.jpg)
WSDL – definiçao de serviços
Uma definição de serviço, tal como é expressa pelo construtor definitions
37
![Page 38: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/38.jpg)
Arquitetura WS
Camadas
– Descoberta
– Publicação (UDDI /direta)
– Descrição dos serviços (WSDL)
– Troca de Mensagens baseadas em XML (SOAP)
– Rede (HTTP, SMTP, FTP)
![Page 39: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/39.jpg)
Interface e Implementação
O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes:
– interface do serviço
– implementação do serviço.
Cada parte pode ser definida de maneira independente e conseqüentemente reutilizada por outras aplicações.
![Page 40: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/40.jpg)
Interface de Serviço
Especificação de interface de serviço é uma descrição de serviço reutilizável que pode ser instanciada e implementada por diferentes implementações de serviços.
Semelhante a IDL (CORBA).
![Page 41: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/41.jpg)
Elementos da Interface de Serviço
Tipos (types) – Definem os tipos de dados que são utilizados para
descrever as mensagens. Para melhor interoperabilidade e independência de plataforma indica-se o uso de XSD (XML Schema Documents)
<types>
<schema targetNamespace="http://example.com/stockquote.xsd“
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
...
</element>
</schema>
</types>
![Page 42: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/42.jpg)
Mensagens (message)
– Representam uma definição abstrata dos dados que serão transmitidos. Uma mensagem é composta por diferentes partes lógicas que estão associadas com uma definição contida em um sistema de tipos.
<message name=“itemInformation”>
<part name=“theElement” element=“aliarForItem” />
</message>
Elementos da Interface de Serviço
![Page 43: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/43.jpg)
Tipos de portas (portType)
– São conjuntos de operações abstratas, cada uma contendo mensagens de entrada e saída.
.... >
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType> ...
Elementos da Interface de Serviço
![Page 44: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/44.jpg)
Operações (operation)
– Definição abstrata de uma ação que um serviço pode executar
.... >
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType> ...
Elementos da Interface de Serviço
![Page 45: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/45.jpg)
Ligações (binding) – Especificam protocolos concretos além de especificações
de formatação de dados para as operações e mensagens definidas em um tipo de porta particular.
<binding name="StockQuoteSoapBinding“
type="tns:StockQuotePortType">
<soap:binding style="document“
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
Elementos da Interface de Serviço
![Page 46: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/46.jpg)
Implementação do Serviço
A implementação de serviço é um documento WSDL que descreve como uma interface particular é implementada por um determinado provedor de serviços. Os elementos que fazem parte da implementação do serviço são ports e services.
![Page 47: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/47.jpg)
Implementação do Serviço
Porta (port)
– Especifica um endereço para uma ligação, definindo então um endpoint único.
<port name="StockQuotePort“
binding="tns:StockQuoteBinding">
<soap:address
location="http://example.com/stockquote"/>
</port>
![Page 48: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/48.jpg)
Implementação do Serviço
Serviço (service)
– Modela um Web Service agregando um conjunto de portas relacionados entre si.
<wsdl:definitions .... >
<wsdl:service name="nmtoken">
<wsdl:port .... />
</wsdl:service>
</wsdl:definitions>
![Page 49: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/49.jpg)
WSDL
As definições de interface e implementação de serviços podem fazer parte de um mesmo documento WSDL .
Um documento WSDL contém elementos que possuem significado para um Web Service.
![Page 50: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/50.jpg)
Elementos da WSDL para seu
XSD
definitions documentation message portType input output fault operation service binding port
![Page 51: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/51.jpg)
Estrutura de um Documento WSDL
• Um documento WSDL é um conjunto de
definições. Há um elemento “definitions”
na raiz e outras definições no interior
![Page 52: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/52.jpg)
This example uses a fixed XML format instead of the SOAP encoding
Example 1 SOAP 1.1 Request/Response via HTTP [2]
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl“
xmlns:tns="http://example.com/stockquote.wsdl“
xmlns:xsd1="http://example.com/stockquote.xsd“
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/“
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote.xsd“
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
Definitions:
Define a raiz do
documento WSDL
types:
Define os tipos de dados
que serão utilizados para
trocar mensagens
types:
Indica-se
o padrão
XSD
![Page 53: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/53.jpg)
Cont.
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<fault name= “..... />
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
message:
Definição abstrata
dos dados enviados
e recebidos
portType:
Define um conjunto de
operações disponíveis em
uma determinada porta operation:
Nomeia as operações de
entrada e saída e ainda
podem descrever erros
(fault)
fault:
Leyout de retorno
de qualquer falha
![Page 54: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/54.jpg)
Cont.
<binding name="StockQuoteSoapBinding“
type="tns:StockQuotePortType">
<soap:binding style="document“
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>My first service
</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
binding:
Especifica o protocolo e o
formato de dados para
operações e mensagens
definidas por uma portType Input/output:
Descreve os elementos que
uma operação usa como
parâmetros de entrada e
saída
service:
Modela um Web Services
agregando um conjunto de
portas relacionadas
documentation:
Textos ou elementos
adicionais, informativos,
utilizados para documentação
port:
Especifica o
endereço de um
binding
![Page 55: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/55.jpg)
Referências
[1] Seely, Scott. SOAP: Cross Platform, Web Services Development, Using XML. New York: Prentice Hall, 2002.
[2] W3C. Web Services Description Language (WSDL) 1.1, [online], 05/06/2002, http://www.w3.org/tr/2001/NOTE=wsdl-20010315.
![Page 56: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/56.jpg)
Criando um Web Service SOAP
56
![Page 57: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/57.jpg)
Criando Web Services em SOAP
Serviços Web são definidos por classes.
Um Web Service pode oferecer várias operações, cada uma representada por um método de classe.
Uma prática importante: dividir a interface de um serviço da sua implementação.
– interface de um serviço: SEI (Service Endpoint Interface) e
– a implementação: SIB (Service Implementation Bean).
![Page 58: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/58.jpg)
Criando o Web Service ALO
Crie a interface do serviço
@Webservice: avisa ao compilador Java que o arquivo atual
corresponde à definição SEI de um serviço Web
@WebMethod indica que um determinado método corresponde a uma operação de serviço e assim pode ser invocado por um cliente
@SOAPBinding indica que o serviço utilizará a abordagem SOAP
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface Alo {
@WebMethod public String alo (@WebParam(name = "nome") String
txt);
}
![Page 59: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/59.jpg)
Criando a Implementação do Serviço
ALO Criar a implementação da interface: a SEI onde serão
implementados os métodos definidos anteriormente
@WebService(endpointInterface = "alo.Alo")
public class AloServer implements Alo{
public String alo (@WebParam(name = "nome") String txt) {
return "Olá " + txt + " !";
}
}
![Page 60: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/60.jpg)
Publicando o Serviço
Endpoint : permite publicar um serviço em um servidor. Parâmetros:
– o endereço do servidor e
– a instância do SIB do serviço a ser publicado.
– O serviço é publicado na porta 9875.
public class AloPublish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9875/alo", new AloServer());
}
}
![Page 61: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/61.jpg)
Usando o serviço
indicando o WSDL onde o serviço poderá ser encontrado
public class AloClient {
public static void main(String args[]) throws Exception {
URL url = new URL("http://127.0.0.1:9875/alo?wsdl");
QName qname1 = new QName("http://alo/", "AloServerService");
Service ws1 = Service.create(url, qname1);
Alo cS = ws1.getPort(Alo.class);
System.out.println("Resultado " + cS.alo("Macacada"));
}
}
![Page 62: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/62.jpg)
Usando o serviço
Nome qualificado em XML para QName.
Indica uma URI (namespace) e o nome do serviço.
– Namespace: fornecido pela WSDL do serviço, e
– Nome local: classe SIB acrescida da palavra “Service”. O nome local aparece na última seção do documento WSDL (seção service).
public class AloClient {
public static void main(String args[]) throws Exception {
URL url = new URL("http://127.0.0.1:9875/alo?wsdl");
QName qname1 = new QName("http://alo/", "AloServerService");
Service ws1 = Service.create(url, qname1);
Alo cS = ws1.getPort(Alo.class);
System.out.println("Resultado " + cS.alo("Macacada"));
}
}
![Page 63: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/63.jpg)
Usando o serviço
retorna uma referência a um objeto que pode invocar as operações oferecidas pelo serviço
public class AloClient {
public static void main(String args[]) throws Exception {
URL url = new URL("http://127.0.0.1:9875/alo?wsdl");
QName qname1 = new QName("http://alo/", "AloServerService");
Service ws1 = Service.create(url, qname1);
Alo cS = ws1.getPort(Alo.class);
System.out.println("Resultado " + cS.alo("Macacada"));
}
}
![Page 64: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/64.jpg)
Usando o serviço
Acesso a interface de ponto final (endpoint)
– tipo SEI do serviço, sendo capaz de acessar seus métodos.
O cliente poderia ter sido implementado em qualquer linguagem de programação como C, C++, PERL ....
public class AloClient {
public static void main(String args[]) throws Exception {
URL url = new URL("http://127.0.0.1:9875/alo?wsdl");
QName qname1 = new QName("http://alo/", "AloServerService");
Service ws1 = Service.create(url, qname1);
Alo cS = ws1.getPort(Alo.class);
System.out.println("Resultado " + cS.alo("Macacada"));
}
}
![Page 65: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/65.jpg)
65
![Page 66: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/66.jpg)
Exercício: Calculadora
www.linhadecodigo.com.br
Desenvolvendo e usando web services em java
66
![Page 67: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/67.jpg)
Exemplo: Calculadora @WebService
@SOAPBinding(style = Style.RPC)
public interface CalculadoraS {
@WebMethod
float soma(float num1, float num2);
@WebMethod
float subtracao(float num1, float num2);
@WebMethod
float multiplicacao(float num1, float num2);
@WebMethod
float divisao(float num1, float num2);
}
![Page 68: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/68.jpg)
Exemplo: Calculadora @WebService(endpointInterface = "calc.CalculadoraS")
public class CalculadoraSImpl implements CalculadoraS {
public float soma(float num1, float num2) {
return num1 + num2;
}
public float subtracao(float num1, float num2) {
return num1 - num2;
}
public float multiplicacao(float num1, float num2) {
return num1 * num2;
}
public float divisao(float num1, float num2) {
return num1 / num2;
}
}
![Page 69: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/69.jpg)
Exemplo: Calculadora public class CalculadoraSPublish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9876/calc",
new CalculadoraSImpl());
}
}
![Page 70: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal](https://reader030.fdocuments.net/reader030/viewer/2022040122/5f1042b67e708231d4483ba2/html5/thumbnails/70.jpg)
Exemplo: Calculadora class CalculadoraClient {
public static void main(String args[]) throws Exception {
URL url = new URL("http://127.0.0.1:9876/calc?wsdl");
QName qname = new
QName("http://calc/","CalculadoraSImplService");
Service ws = Service.create(url, qname);
CalculadoraS calc = ws.getPort(CalculadoraS.class);
System.out.println("Soma (5+1): " + calc.soma(5,1));
System.out.println("Subtracao (5-1): " + calc.subtracao(5,1));
System.out.println("Multiplicacao (5*1): " + calc.multiplicacao(5,1));
System.out.println("Divisao (5/1): " + calc.divisao(5,1));
}
}