Title: DAS 5315 - Sistemas Distribu
1DAS 5315 - Sistemas Distribuídos para Automação
Industrial
Web Services
Professor Joni da Silva Fraga Estagiário
Vinícius Moll
2Agenda
- Introdução
- SOA (Service Oriented Architecture)
- Web Services
- Arquitetura
- XML
- SOAP
- WSDL
- UDDI
- Ferramentas
- Conclusão
3Introduçã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
4SOA
5Service 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
6Service 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
7Service Oriented Architecture
Interface desacoplada da lógica de processamento
dos dados
troca de mensagens
boa arquitetura 3-tier service
Serviço Central Compras
UI
Presentation Layer
Data Layer
Web Service Standards permitem ligaçõescross-plat
form
Dados e Lógica Negócio encapsulados por uma Web
Service Façade
8Web Services
9Serviç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
10Definiçã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.
11Definiçã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
12Definiçã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
13Arquitetura Web Services
- Legenda
- Publicação do WSDL
- Pesquisando Web services
- Retorna WSDL do serviço
- Interação cliente-serviço usando SOAP
Registro UDDI
3
WSDL
2
WSDL
1
Provedor Serviços
Consumidor Serviço
SOAP
4
14Arquitetura Web Services
- O processo para geração de um Web Service se
resume em três passos - Publicação
- Localização
- Consumação
15Arquitetura Web Services
- Service ProviderResponsá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 RequesterResponsá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 BrokerResponsá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.
16Arquitetura Web Services
Agente diretório serviços
Publicação do Serviço
Busca do serviço
Retorno da descrição WSDL
Client que necessita do Serviço
Provedor de Web Services
WSDL (Descrição)
UDDI (Descoberta)
SOAP (Interação)
17Protocolos de Web Services
Agente diretório serviços
Consumidor do Serviço
http//www.uddi.org
Serviço Web
http//servico.com/?WSDL
http//servico.com/svc1
18Arquitetura Web Services
Message
SOAP / XML
Transport
HTTP(S)
Discovery
UDDI
Description
WSDL
19Arquitetura Web Services
20Invocação de Web Services
ltsoapEnvelope ltsoapBodygt ltaddgt
lti1gt10lt/i1gt lti2gt5lt/i2gt lt/addgt
lt/soapBodygt lt/soapEnvelopegt
Web Server (Ex. Apache Tomcat)
Client (Ex. CalcClient.java)
calculator.add(10, 5)
Java
Web Service Toolkit (Ex. Apache Axis)
SOAP Binding
Java to SOAP
Web Service Code (Ex. Calculator.java)
add(10, 5)
SOAP Request
SOAP to Java
Java
21Por 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
22XML
- 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).
23XML
- 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.
24SOAP (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
bi-direcional
25SOAP (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)
26SOAP (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
27SOAP (Simple Object Access Protocol)
28SOAP (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)
29SOAP (Simple Object Access Protocol)
30SOAP (Simple Object Access Protocol)
31SOAP (Simple Object Access Protocol)
- Cabeçalho HTTP da resposta
32SOAP (Simple Object Access Protocol)
33WSDL (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)
34WSDL (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
35WSDL (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
36WSDL (Web Service Description Language)
37WSDL (Web Service Description Language)
38WSDL (Web Service Description Language)
39WSDL (Web Service Description Language)
40UDDI (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
41UDDI (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
42UDDI (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
43UDDI (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
44UDDI (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
45Ferramentas
- 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
46Java 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
47Ferramentas
- 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
48Ferramentas
- 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
49Ferramentas
- 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.
50Web Services Project _at_ 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
51Próxima Aula
- Assunto Desenvolvendo um Serviço Web
- Local Laboratório LIICT
- Data 01/11/2011
- Hora 1520
52Conclusão
53A 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
54Fontes 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.
55- Etapa1 - Usuário deve informar
- Origem,
- Destino,
- Data Início e Fim
Confirma a compra na Companhia
1
Pesquisa preço e disponibilidade
. . .
3
4
7
Resposta
2
Etapa 2 - Usuário Informa o número do cartão
Pesquisa preço e disponibilidade
Resposta
5
6
Verifica as informações do cartão crédito do
cliente
. . .
Pesquisa preço e disponibilidade
Resposta
Resposta
56Perguntas ???
Web Services
Joni S. Fraga Vinícius Moll