Web Services
Download
Report
Transcript Web Services
DAS 5315 - Sistemas Distribuídos para Automação Industrial
Web Services
2º Semestre 2011
Professor: Joni da Silva Fraga
Estagiário: Vinícius Moll
DAS5315 - Sistemas
1
Distribuídos
Agenda
• Introdução
• SOA (Service Oriented Architecture)
• Web Services
–
–
–
–
–
Arquitetura
XML
SOAP
WSDL
UDDI
• Ferramentas
• Conclusão
Introdução
Comunicação distribuída
• Estratégias que permitem a comunicação entre aplicações
distribuídas.
• Tipos distintos de comunicação em um sistema distribuído:
• Sucesso da Internet
– Sockets
– RMI - Remote Method Invocation
– CORBA – Commom Object Request Broker Architecture
– EJB – Enterprise Java Bean
– Web Services
SOA
Service Oriented Architecture (SOA)
• SOA é uma arquitetura que representa
funcionalidades do software como serviços
– É uma caracterização de sistemas distribuídos, que visa
organizar aplicações e sua infra-estrutura, através de um
conjunto de interações de serviços que são acessados
através de interfaces e protocolos padronizados, tendo
como foco processos de negócio.
• Já existiam tecnologias para SOA
– Ex.: CORBA, RMI, etc...
• Interoperabilidade é muito importante
– Padronização
– Fraco acoplamento
Service Oriented Architecture (SOA)
• Neutro à tecnologia
– Invocado através de tecnologias padrões (protocolos,
mecanimos de publicação e de busca) amplamente aceitas
• Fracamente acoplado
– Não requer o conhecimento prévio de qualquer estrutura
interna presente no lado do cliente ou do serviço
• Localização transparente
– Informações sobre a definição e localização são publicadas
em um repositório e estão acessíveis a uma variedade de
clientes, independente da localizações dos mesmos
Service Oriented Architecture
troca de mensagens
Interface desacoplada
da lógica de
processamento dos
dados
boa arquitetura
3-tier service
Serviço Central Compras
Data Layer
Business
Layer
Dados e Lógica Negócio
encapsulados por uma
Web Service Façade
Service
Façade
UI
Presentation
Layer
Web Service Standards
permitem ligações
cross-platform
Web Services
Serviços Web
•
•
•
•
•
•
São compostos por objetos distribuídos
Fazem a integração de aplicações distribuídas
Utilizam a infra-estrutura da Internet
Os documentos e protocolos usam o XML
Serviços são especificados em WSDL
Usam o protocolo SOAP para troca de
mensagens
• Usam a UDDI para publicação e localização dos
serviços
– Exemplo: comércio eletrônico, serviços de busca, etc
Definição de Web Services
Um Web Service é:
• Qualquer serviço que é disponibilizado através da
web.
• Qualquer serviço que possibilita duas aplicações de
computador trocarem dados.
– Principalmente, mas não exclusivamente
• Baseado em:
– XML para codificação de dados
– HTTP para transporte de dados
• Um documento XML transmitido remotamente e
mapeado para um programa executável.
Definição de Web Services
Um Web Service é:
• Tecnologia de chamada remota de objetos
• Fornecem a infra-estrutura para criação de
aplicações distribuídas (web ou não)
• Permitem a criação de pequenos módulos de código
reutilizáveis e disponibilizados para construção de
aplicações “LEGO”
• Utiliza protocolos Web como meio de transporte e
comunicação
• Alto grau de abstração em relação a linguagens de
programação e plataformas de hardware / software
Definição de Web Services
• Comunicação entre aplicações de WS usam 4 camadas que
empacotam a requisição e a resposta entre o servidor e o
cliente.
– XML – possibilita estabelecer objetos, métodos, parâmetros, dados e
tipos de dados
– SOAP – protocolo que estabelece a comunicação entre os ambientes
– WSDL – descreve o serviço (XML)
– UDDI – representa service broker. Contém as descrições dos WS.
UDDI
WSDL
SOAP
XML
Arquitetura Web Services
Registro
UDDI
3
WSDL
Consumidor
Serviço
Legenda:
1. Publicação do WSDL
2. Pesquisando Web services
3. Retorna WSDL do serviço
4. Interação cliente-serviço
usando SOAP
WSDL
2
1
SOAP
4
Provedor
Serviços
Arquitetura Web Services
O processo para geração
de um Web Service se
resume em três
passos:
1. Publicação
2. Localização
3. Consumação
Arquitetura Web Services
• Service Provider
Responsável por prover o serviço. A técnica de troca de mensagens com o
Service Requester ocorre com o uso de SOAP, um XML que contém dados
sobre a requisição e os resultados encontrados.
• Service Requester
Responsável por consumir o serviço. Efetua a troca de mensagens com o
Service Provider com o uso do SOAP. Os métodos acessíveis no Web Service
estão especificados no Service Broker através do uso da tecnologia WSDL,
outro XML que prove estes dados.
• Service Broker
Responsável por publicar e divulgar o serviço. O Service Provider
disponibiliza as informações de seu Web Service ao Service Broker, o qual irá
registrar este serviço em um diretório público e gerenciá-lo. Este diretório
possui um nome, UDDI, que teoricamente deveria ser uma espécie de
Google aos consumidores de Web Services mas que na prática ainda é pouco
usual. Seu uso é vital para troca de dados WSDL.
Arquitetura Web Services
Busca do serviço
Retorno da descrição
WSDL
Client que
necessita
do Serviço
Agente
diretório
serviços
UDDI
(Descoberta)
SOAP (Interação)
Publicação do Serviço
WSDL
(Descrição)
Provedor
de
Web
Services
Protocolos de Web Services
Encontre um serviço
http://www.uddi.org
HTML com referência para WSDL
Agente
diretório
serviços
Como conversamos (WSDL)
Consumidor
do
Serviço
http://servico.com/?WSDL
Descrições de serviço (XML)
Deixe-me falar com você
(SOAP)
http://servico.com/svc1
Resposta do serviço (XML)
Serviço
Web
Arquitetura Web Services
Message
SOAP
/ XML
Transport
HTTP(S)
Discovery
UDDI
Description
WSDL
Implementation
.NET/J2EE
Business
Logic
Data
Arquitetura Web Services
Invocação de Web Services
Client
(Ex.: CalcClient.java)
Java
<soap:Envelope
<soap:Body>
<add>
<i1>10</i1>
calculator.add(10,
5)
<i2>5</i2>
</add>
</soap:Body>
</soap:Envelope>
Web Server
(Ex.: Apache Tomcat)
Web Service Toolkit
(Ex.: Apache Axis)
SOAP Binding
Java to SOAP
add(10, 5)
SOAP Request
Web Service
Code
(Ex.: Calculator.java)
SOAP
to Java
Java
Por que utilizar Web Services?
• Dois fatores chave:
– Ubiqüidade
– Facilidade de uso
• Interoperável:
– Neutro em relação a SO e linguagem
– Integração Java & .NET : simples e barata
• Todo mundo dá suporte ou irá dar a Serviços Web:
– Necessário dar suporte a Serviços Web para facilitar
• Integração
– Não-invasivos(impactante):
– Baseados em protocolos ubiqüos: HTTP/SMTP
– Complementam tecnologias já existentes
XML
• O XML foi projetado para marcar documento
de estrutura arbitraria em oposição ao HTML
que foi projetado para marcar documentos
com estruturas fixas.
• Atualmente é bastante utilizado em uma série
de atividades de desenvolvimento de
software, incluíndo os Web Services (WSDL,
SOAP).
XML
• XML (Extensible Markup Language) é uma linguagem
para marcar documentos que contêm informações
estruturadas.
• Informação estruturada tem tanto conteúdo como
alguma indicação de que rol esse conteúdo tem no
documento.
– Um documento pode ter o conteúdo “Fernando
Gauthier” na área de bibliografias o que tem
significado diferente de estar na página de rosto
logo abaixo do título.
SOAP (Simple Object Access Protocol)
Protocolo para troca de mensagens
• Baseado em XML, encapsula chamadas remotas
de procedimento (RPC) sobre outros protocolos
• Opera sobre protocolos da camada de aplicação
(pilha TCP/IP) mas geralmente é tratado como um
protocolo de transporte
• Geralmente adota-se SOAP sobre o protocolo
HTTP
– Mas pode-se usar sobre o SMTP, TCP, UDP, etc.
• Permite troca de mensagens uni-direcional e bidirecional
SOAP (Simple Object Access Protocol)
Uma mensagem SOAP consiste basicamente:
• Envelope
– Elemento raiz no documento XML que
representa a mensagem SOAP
• Cabeçalho (opcional)
– Oferece mecanismos para estender a
mensagem
– Informações de roteamento, segurança,
coordenação
• Corpo
– Document - A RPC em si faz parte deste
elemento
• Fault (opcional)
SOAP (Simple Object Access Protocol)
A especificação do SOAP é dividida em três partes:
• Envelope SOAP
– Documento XML formado por elementos que definem
os dados que serão trocados entre as aplicações
• Regras de codificação dos dados
– Definem como as instâncias de tipos de dados
definidos no nível de aplicação devem ser codificadas
• Convenções RPC
– Define convenções para representar RPC através de
mensagens SOAP
SOAP (Simple Object Access Protocol)
• Envelope (Exemplo)
SOAP (Simple Object Access Protocol)
• No cabeçalho da mensagem SOAP podem ser
definidas informações específicas para nós
SOAP intermediários (roteadores SOAP)
SOAP (Simple Object Access Protocol)
• Cabeçalho HTTP do pedido
SOAP (Simple Object Access Protocol)
• Formato do pedido SOAP
SOAP (Simple Object Access Protocol)
• Cabeçalho HTTP da resposta
SOAP (Simple Object Access Protocol)
• Formato da resposta SOAP
WSDL (Web Service Description Language)
• Descreve interface
para consumir um
Serviço Web
– Interface:
operações
(entrada e saída)
– Acesso:
(ligação de
protocolo)
– End point:
(localização do
Serviço)
WSDL (Web Service Description Language)
• Um documento WSDL é composto por três
elementos principais:
– Definição dos tipos de dados
• especifica a estrutura e o conteúdo das mensagens
– Operações abstratas
• descreve as operações que poderão ser executadas
– Associação dos serviços
• especifica como mapear as operações nos protocolos de
rede utilizados para o transporte
WSDL (Web Service Description Language)
• types - Definição dos tipos de dados (Ex: inteiros, booleano, tipos
compostos, etc.)
• messages - Mensagens que um Serviço Web espera enviar ou receber
• operation - Define como o serviço irá tratar os dados e como deverão ser
retornados em uma resposta
– one-way - Serviço recebe mensagem mas não envia resposta
– request-response - Serviço recebe mensagem e envia resposta
– solicit-response - Serviço envia mensagem e recebe resposta
– notification - Serviço envia mensagem sem esperar por resposta
• portType - Agrupamento lógico de operações (elemento operation)
análogo a uma definição de objeto que contém múltiplos métodos
• binding - Descreve como os elementos messages e operation serão
mapeados em um protocolo de transporte
• port - Combinação entre o elemento binding e endereço de rede,
provendo um endereço único para acessar um serviço
• service - Coleção de elementos port
WSDL (Web Service Description Language)
WSDL (Web Service Description Language)
WSDL (Web Service Description Language)
WSDL (Web Service Description Language)
UDDI (Universal Description Discovery and Integration specification)
• Diretório independente de plataforma de
descrição para Serviços Web
• Método padrão para publicar e descobrir
Serviços Web e fornecedores
• Suporta vários tipos de descrição de serviços,
não limitados à WSDL
• Registros UDDI podem ser gerados a partir de
descrições WSDL
UDDI (Universal Description Discovery and Integration specification)
• Para efetuar uma chamada a um Serviço Web é necessário
primeiramente conhecer sua interface, semântica de chamada e
localização
• A disponibilização dessas informações pode ser feita de duas
maneiras:
– Divulgação direta entre o provedor e os consumidores do
serviço
– Através de um serviço de diretórios
• Um diretório global de registros de Serviços Web, onde ficam
disponibilizadas informações sobre as empresas fornecedoras de
serviços
• O resultado é um documento WSDL, que contém a URI para o
serviço
UDDI (Universal Description Discovery and Integration specification)
• Dados e meta-dados dos Serviços Web são
armazenados em diretórios UDDI (UDDI registry)
• E são associados a um identificador único,
denominado, UDDI key
– UDDI key é criado de acordo com regras de classificação
especificadas para cada organização
• Permite aos consumidores realizarem consultas mais
granulares
– Ex: buscar por provedores que forneçam o serviço X dentro
de uma determinada localização geográfica
UDDI (Universal Description Discovery and Integration specification)
• É possível armazenar informações relacionadas
diretamente à entidade que provê o serviço
• O modelo de dados do UDDI prevê os seguintes tipos:
– businessService - descrições sobre as funções de negócio do
serviço
– businessEntity - informações sobre a organização detentora
do serviço
– bindingTemplate - informações técnicas do serviço
– tModel - outros atributos, como taxonomia geográfica, mas
geralmente contém o WSDL que descreve o serviço
UDDI (Universal Description Discovery and Integration specification)
A idéia inicial do UDDI:
• Diretório público de livre acesso para as organizações
divulgarem seus serviços
• Porém, com a adoção dos Serviços Web para integrar
aplicações dentro das próprias organizações, surgiu a
necessidade de diretórios privados
• A especificação 3.0 do UDDI prevê os seguintes tipos de
diretórios:
– privado - diretório interno, isolado da rede pública
– afiliado - somente clientes autorizados tem acesso ao
diretório
– público - acesso aberto e público ao diretório
Ferramentas
• Java Web Services Developer Pack
– Kit para construção, implantação e para testes de Web
Services, assim como para aplicações Web e baseadas
em XML
Provê implementações para: WSDL, SOAP e UDDI
• Contém:
–
–
–
–
JAXP - Java API for XML Processing
JAXR - Java API for XML Registries
JAX-RPC - Java API for XML-based RPC
SAAJ - SOAP with Attachments API for Java
Java Web Services Developer Pack 2.0
•
•
•
•
•
•
•
•
•
•
•
•
•
Fast Infoset
Service Registry
XML
JAXB
JAXP
JAXR
JAX-RPC
SAAJ
JAXM
XML Web Services Security
Service Registry
Sun Java Streaming XML Parser
JSTL
Ferramentas
• Diversas empresas estão provendo ferramentas
de desenvolvimento para Serviços Web
– Apache, Sun, IBM, Microsoft, BEA, etc.
• Diversas linguagens de programação já
apresentam suporte aos Serviços Web
– Java, C++, C#, PHP, Perl, Python
• Vamos usar duas ferramentas baseadas em Java
– Java Web Services Developer Pack - JWSDP
– Apache Axis
Ferramentas
Apache Axis
• Basicamente uma implementação SOAP para
construção de clientes e servidores
• Possui um servidor de aplicação pequeno e
simples
• Pode ser utilizado em conjunto com o Tomcat
• Grande suporte ao WSDL
• Ferramenta para monitoramento de pacotes
TCP/IP
Ferramentas
Apache Axis2
• Aprenderam algumas lições com o Axis1 e isso
tornou o Axis2 mais robusto e modular
• Fica mais fácil adicionar novas funcionalidades
• Porém, o desenvolvimento de uma simples
aplicação ficou um pouco mais complexo se
comparado com o Axis1
• Já possui implementações para as especificações
de segurança, coordenação, etc.
Web Services Project @ Apache
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Addressing (WS-Addressing)
Axis (SOAP)
EWS (J2EE 1.4)
JaxMe (JAXB)
jUDDI (UDDI)
Kandula (WS-Coordination, WS-AtomicTransaction, WS-BusinessActivity)
Mirae (J2ME)
Muse (WSDM MUWS)
Pubscribe (WS-Notification)
Sandesha (WS-ReliableMessaging)
Scout (JAXR)
Woden (WSDL 2.0)
WSIF
WSRF (WS-ResourceFramework)
WSS4J (WS-Security)
XML-RPC
Próxima Aula
•
•
•
•
Assunto Desenvolvendo um Serviço Web
Local Laboratório LIICT
Data 01/11/2011
Hora 15:20
Conclusão
A Propaganda é grande - Web Services
MAS ...
• O formato texto aumenta muito o overhead
• Não existe “neutralidade” de transporte
• Diferentes versões de padrões
• Existem muitos padrões que “interagem”, mas não
definem nenhuma restrição para interagirem
• UDDI não atende as necessidades
• Ferramentas de geração automática atrapalham
• Não existe interoperabilidade 100%
Fontes de consulta
•
•
•
•
•
•
•
http://java.sun.com/webservices
developers.ibm.com/webservices
JavaWorld: www.javaworld.com
webservices.org
www.uddi.org
xml.apache.org
http://www.tusc.com.au/tutorial/html/chap9.
html
Créditos:
Para essa apresentação foram usados, parcialmente, textos /slides de:
Paulo Manoel Mafra, Marcelo Iury, Adriano Teixeira de Souza.
Etapa1 - Usuário deve informar:
• Origem,
• Destino,
• Data Início e Fim
Usuário,
Cliente Web Service
Servidor A
Empresa Aérea A
1
4
7
2
Etapa 2 - Usuário
Informa o número
do cartão
Verifica as
informações do
cartão crédito
do cliente
.
.
.
3
Servidor 1,
provedor serviço
5
6 Web
Servidor Banco
(Serviço de Validação Cartão de crédito)
Servidor B
Empresa Aérea B
.
.
.
Servidor N
Empresa Aérea N
Web Services
Joni S. Fraga
Vinícius Moll