Web Services
Jorge Dias Jr.
2Parte 1
• Definição
• Arquitetura
• XML
• XML-RPC
• SOAP
• WSDL
• UDDI
• Desvantagens
Web Services
Conceito:
• “Web services são aplicações modulares auto-descritivas e auto-contidas, que podem ser conectadas e acopladas a outros web services” [IBM].
• “Web services são componentes de software com baixo fator de acoplamento, utilizados por meio de padrões de tecnologia Internet. Um Web service representa uma função de negocio ou um serviço que pode ser acessado por uma outra aplicação.” [Gartner].
Web Services
Características
• Conjunto de tecnologias padronizadas.
- Formato de dados
- Comunicação
• Descrições baseadas em XML.
• Middleware independente de plataforma e
de linguagem de programação.
• Se comunicam facilmente através de
firewalls.
5
Web Services
Utilização
• Construção de aplicações distribuídas
baseadas na Web.
• Disponibilização de serviços pela Web.
• Integração de sistemas: PCs, dispositivos
móveis, servidores de banco de dados,
etc.
• Gerenciamento de transações distribuídas
em aplicações Web.
6
Web Services
7
Arquitetura dos Web
Services
Arquitetura baseada nos papéis:
- Service provider: Fornecedor do web service, quem implementa e disponibiliza os serviços. - Service requestor: Consumidor do web service,
que utiliza uma conexão de rede e envia um XML Request.
- Service registry: Diretório de serviços
centralizado, onde os fornecedores publicam os serviços.
8
WEB
WEB
Arquitetura dos Web
Services
Arquitetura baseada nas regras
Service Requestor Service Registry Service Provider 1 2 Invoca o serviço Descobre o serviço
9
Arquitetura dos Web
Services
Arquitetura baseada na pilha de protocolos
- Serviço de transporte: HTTP, SMTP, FTP, JMS. - Mensagem XML: Camada responsável por codificar
as mensagens num formato de XML comum. Ex: XML-RPC e SOAP.
- Descrição do serviço: Responsável por descrever as interfaces públicas de um web service. Ex: WSDL
- Descobrimento do serviço: Centraliza os serviços num domínio de registro comum e fornece facilidade para busca e publicação dos serviços. Ex: UDDI
10
Arquitetura dos Web
Services
Arquitetura baseada na pilha de protocolos
Discovery (UDDI) Description (WSDL) XML Messaging (XML-RPC, SOAP, XML)
Transport (HTTP, SMTP, FTP, BEEP)
XML
(eXtended Markup Language)
XML
• É usada para intercambiar dados - Permite trocar dados facilmente entre aplicações Web.
- Facilita a análise de dados por programas. - É independente de sistemas operacionais ou formatos proprietários usados por aplicações. - Permite a definição de elementos pelo usuário (ou aplicação) para estruturar dados.
13
XML
• Documentos estruturados em formato
texto.
• Compostos por tags XML e valores dos
dados.
• Legíveis para humanos e máquinas.
• Dados em XML podem ser facilmente
interpretados pelas aplicações através de
parsers (independente de linguagem e
plataforma).
14
XML
XML vs. HTML
• XML é visto erroneamente como um
formato alternativo ao HTML.
• XML não possui tags para formatação de
documentos como o HTML.
• XML se preocupa apenas com o conteúdo
e não com a apresentação.
15
XML
• Tags: <tag> </tag>
• Valores de dados entre tags de abertura e
fechamento: <tag> dado </tag>
• Tags podem possuir atributos:
<tag atributo = “valor” />
16
XML
• Exemplo <?xml version=“1.0”?> <alunos> <aluno id=“1”><nome> Jose Jorge </nome> <matricula> 10211013 </matricula> </aluno>
<aluno id=“2”>
<nome> Fulano </nome> <matricula> 111111 </matricula> </aluno>
17
XML
• Esquemas XML
- Especificam o formato que deve ser respeitado por um documento XML.
- Definem tags, atributos e os tipos de dados aceitos para cada elemento.
- Um documento XML é válido se estiver em conformidade com um esquema.
- Tipos de esquema:
DTD (Document Type Definition) XSD (XML Schema Definition) 18
XML
• Exemplo de XSD <?xml version=“1.0” encoding=“ISO-8859-1” ?> <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema> <xs:element name=“alunos”><xs:attribute name=“id” type=“xs:integer” use=“required”/>
<xs:complexType>
XML-RPC
(XML Remote Procedure Call)
XML-RPC
• Utiliza XML sob HTTP para comunicação.
• Três principais partes:
- Modelo de dados XML-RPC
- Estruturas request XML-RPC
- Estruturas response XML-RPC
21
XML-RPC
Modelo de dados XML-RPC
• XML-RPC define 6 tipos de dados básicos
e 2 tipos de dados composto.
• Tipos básicos são representados
simplesmente por tags XML.
Ex: <string> Oiiii </string>
22
XML-RPC
Modelo de dados XML-RPC
23
XML-RPC
Modelo de dados XML-RPC - Estruturas
24
XML-RPC
25
XML-RPC
XML-RPC Response
26
SOAP
(Simple Object Access Protocol)
SOAP
• Protocolo de comunicação entre Web Services (padrão W3C).
• Define o formato das mensagens trocadas entre WS.
• Baseado em XML-RPC, com várias evoluções. • Independente de plataforma e linguagem de
programação.
• A comunicação pode ser feita em vários protocolos como HTTP, SMTP, FTP, JMS, etc.
SOAP
Funcionamento:
• Cliente cria um envelope SOAP especificando o nome da operação requisitada e os nomes e valores dos parâmetros da operação.
• Requisição é enviada pela rede ao provedor de serviço.
• Requisição é recebida e interpretada. • A operação requisitada é executada.
• A resposta obtida é colocada em um envelope SOAP e enviada ao cliente onde este irá processar o envelope.
29
SOAP
Formato do SOAP
Mensagem SOAP Envelope (obrigatório) Header (opcional) Body (obrigatório) Fault (opcional) 30SOAP
• SOAP Request
31SOAP
• SOAP Response
32SOAP
• Envelope
- SOAP-ENV:Envelope
- Versão controlada com o namespace.
Versão 1.1 <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/> Versão 1.2 <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://www.w3.org/2001/09/soap-envelope>
33
SOAP
• Header
- SOAP-ENV:Header
- O formato do header não é definido na especificação para possibilitar flexibilidade para as aplicações. - Pode ser implementado autenticação, autorização de pagamento, etc.
- Dois atributos no Header podem ser usados: - SOAP-ENV:mustUnderstand quando tem o valor “1” obriga ao outro lado tratar cabeçalhos, caso contrário um erro é gerado.
- SOAP-ENV:actor é usado para encadear outros WS para finalizar o processamento.
34
SOAP
• Header <SOAP-ENV:Header> <myNS:authentication xmlns:myNS=http://www.stevepotts.com/auth SOAP-ENV:mustUnderstand=“1”><login> admin </login>
<password> 123456 </password> </myNS:authentication> </SOAP-ENV:Header>
SOAP
• Body
- SOAP-ENV:Body
- Aqui onde o payload da mensagem
SOAP é colocado.
- Pode ser uma chamada de método, um
documento XML ou apenas uma resposta
contendo uma informação qualquer.
SOAP
• Fault
- SOAP-ENV:fault
- Indica que um problema ocorreu na
tentativa do processamento da requisição
enviada ao Web service.
37
SOAP
• Fault
Descrição Nome do Elemento
Este elemento deve conter o máximo de informações possível sobre o estado do servidor no momento da falha.
detail
Este elemento opcional informa que serviço gerou a falha.
faultActor
Este elemento é uma versão legível para o homem do faultcode.
faultString
Este elemento é exigido pela especificação. Ele deve ter algum código indicando qual é o problema. faultcode
38
SOAP
• Fault
Erro gerado quando um elemento no cabeçalho não pode ser processado e esse elemento é marcado como obrigatório
SOAP-ENV:mustUnderstand
Ocorre quando versões dos processadores SOAP do cliente e do servidor são diferentes.
SOAP-ENV:versionMismatch
Indica que algo de errado aconteceu com a mensagem do cliente.
SOAP-ENV:Client
Um erro ocorreu no servidor ao tratar a requisição do cliente. SOAP-ENV:Server Descrição Tipo do faultcode 39
SOAP
• Tipos de dados
-
<nMat xsi:type=“xsd:string”> 10211013 </nMat>- Tipos de dados permitidos:
- Tipos escalares: int, double, string,...
- Tipos compostos: array, elementos
compostos, JavaBeans.
40
SOAP
41
SOAP
• SOAP via HTTP: Response
42
SOAP
• Implementações
- Apache SOAP
- Microsoft SOAP toolkit
- SOAP::Lite for Perl
- GLUE
WSDL
(Web Services Description Language)
WSDL
• Representa o contrato entre o fornecedor e o cliente do serviço.
• Descreve os serviços do WS através de uma especificação XML.
• Equivalente à especificação de interface IDL de um objeto CORBA ou DCOM.
• Descreve:
- Informação da interface.
- Informação do tipo de dados para as mensagens de requisição e resposta.
- Protocolo de transporte a ser usado.
45
WSDL
Especificação do WSDL
• definitions
• types
• message
• portType
• binding
• service
46WSDL
definitions: deve ser o elemento raiz de todos os
documentos WSDL. Define nome do web service, declara um namespace, e contém descrito todos os elementos do serviço.
types: descreve todos os tipos de dados usados
entre o servidor e o cliente do serviço.
message:especifica as mensagens aceitas por
um Web Service.
47
WSDL
portType: define um conjunto de operações
fornecidas por um Web Service.
Binding: especifica os protocolos de
comunicação usados por um Web
Service.
Service: define um endereço para invocar
um serviço específico (comumente com
URL).
48
WSDL
<types>: Que tipo de dados serão transmitidos <message>: Que mensagens serão transmitidas <portType>: Que operações serão suportadas <binding>: Como as mensagens serão transmitidas <service>: Onde os serviços estarão localizados <Definition>: elemento root do WSDL
49
WSDL
Definition of data types
Definition of messages
Definition of port type
50
WSDL
Definition of the bindings
Definition of the service
WSDL
• definitions
• message
WSDL
• portType
– 4 tipos de operações são permitidas:
• One-way • Request-response • Solicit-response • Notification
53
WSDL
• portType
54WSDL
• binding
• service
55UDDI
(Universal Description, Discovery and Integration)
56
UDDI
• Especificação técnica para descrever, descobrir e integrar web services.
• Criado por Ariba, IBM e Microsoft em set/2000. • É o provedor de registros de Web services. • Armazena as especificações WSDL dos
provedores de serviços.
• Permite que os clientes encontrem os
provedores de serviços dos quais necessitam e descubram como solicitar tais serviços.
• Faz o papel do registro do RMI e dos serviços de nomes e trading do CORBA.
57
UDDI
Características
• Se enfoca no processo de descobrimento em SOA (Service-Oriented Architecture).
• Interfaces registradas são descritas em WSDL. • Registros são armazenados em XML.
• Recebe requisições de registro e descoberta utilizando o protocolo SOAP.
• Empresas podem ter seus servidores UDDI privados para registro de serviços internos.
58
UDDI
• Consulta de Registros
Páginas Brancas: Fornecem o endereço para
contato do provedor de serviço.
Páginas Amarelas: Classificam os provedores em
categorias de acordo com seu ramo de negócio.
Páginas Verdes: Fornecem informações técnicas
sobre os serviços executados pelos provedores.
UDDI
Arquitetura do UDDI:
• UDDI Data model: XML esquema para
descrever os negócios e Web services.
• UDDI API: API baseada no SOAP para
publicação e pesquisa de dados UDDI.
• UDDI cloud services: sites que fornecem
implementações de especificações UDDI.
Ex: IBM e Microsoft.
UDDI
• UDDI Data Model
– Descreve 4 tipos de informação:
• businessEntity • businessService • bindingTemplate • tModel
61
UDDI
• businessEntity
62UDDI
• businessService
63UDDI
• bindingTemplate
64UDDI
• tModel
65
UDDI
• UDDI inquiry API
66
UDDI
• UDDI
Publishing
API
UDDI
Implementações
• Java
- UDDI4J
- jUDDI
• Microsoft COM
- UDDI SDK
• Pearl
- SOAP::Lite
Cliente do Web Service
public class Calculator {
public int somar(int numA, int numB) {
return numA+numB; }
public int subtrair(int numA, int numB {
return numA-numB; }
69
Cliente do Web Service
70
Cliente do Web Service
71
Desvantagens do Web
Service
• Aumento de overhead para abrir as
mensagens e empacotá-las.
• Baixa performance, inclusive em intranets.
• Fragilidade de interface, após ter sido
usada a interface em um cliente, sua
semântica não pode ser alterada, pois
implica em mudanças no cliente.
• Ausência de encriptação na comunicação.
72
Ferramentas
• AXIS
• GLUE
• JWSDP
73