webservice

Propaganda
Vilmar Santos Nepomuceno
Agenda
 Introdução
 WSDLs
 SOAP
 REST
 Segurança em Webservices
Linguagem de Programação
Introdução
 Desenvolvido a partir do RPC (Remote Procedure Call)
em DCE (Distributed Computing Enviroment)
essencialmente Unix.
 MSRPC – Microsoft
 Primeira geração de Frameworks
 CORBA (Common Object Request Broker Architecture)
e DCOM (Distributed COM)
 Java RMI (Remote Method Invocation)
 Segunda Geração
 Java EE e .NET – Objetos Distribuídos
Linguagem de Programação
Introdução
 O DCE/RPC é, em princípio, neutro em linguagem,
embora com forte tendência para C/C++.
 DCE/RPC esconde detalhes de como o transporte é
realizado.
 IDL – Interface Definition Language
Linguagem de Programação
Introdução
 O que são webservices?
 Aplicações tipicamente WEB (Distribuída).
 HTTP
 SOAP e REST – Protocolos
 SOA (Service Oriented Architecture)
Linguagem de Programação
Introdução
 O que é Interoperabilidade?
 O que distingue webservice de Sistemas distribuídos?
 Infraestrutura aberta:

Usa protocolos padrões, são onipresentes e bem
compreendidos.
 Tranferência de Linguagem

Pode ser utilizado por clientes em diversas linguagens
(interoperabilidade).
 Design Modular

Novos serviços podem ser gerados pela integração com
serviços já existentes.
Linguagem de Programação
Introdução
 Para que servem os Webservices?
 Vários sistemas, em várias linguagens, em várias
plataformas.
 Sistemas legados, é preciso reescrever? Basta expor
através de um webservice
 Webservices são inerentementes distribuídos.
 SEI: Service Endpoint Interface – Declara as operações
do serviço
 SIB: Service Implementation Bean – Implementação
do Serviço
Linguagem de Programação
Introdução
 Exemplo I
 Usa Java SE 6 ou superior
 Escrevendo o código...
 Publicando o webservice...
 Testando...
 O que foi gerado?
 Testando com um cliente em Java
Linguagem de Programação
Introdução
 Praticando....
 Criar um webservice para calcular o IMC (Indice de
massa corporal). Fórmula: peso/(altura^2)



Escrevendo o código...
Publicando o webservice...
Testando...
 Criar um cliente para consumir o webservice
Linguagem de Programação
Introdução
 Tornando o publicador MultiThread.
Linguagem de Programação
WSDLs
 WSDL: WebService Definition Language
 Para que serve um WSDL?
 Contrato entre o serviço e seus clientes
 Fornece:



Endpoint do serviço
Operações de serviço
Tipos de dados para estas operações
 Exemplo: ts.xml
Linguagem de Programação
WSDLs
 Types: Tipos de dados que podem ser usados. Podem
ser importados de um XSD (XML Schema Definition).
 Tipos Padrão:


Xsd:string
Xsd:long
 Message: Define as mensagens que implementam o
serviço (Requisição/Resposta).
Linguagem de Programação
WSDLs
 portType: Apresenta o serviço como operações
nomeadas.
 @WebMethods
 Bindings: Oferece informações importantes sobre a
implementação dos serviços.
 Transport: mensagens enviadas via HTTP(SMTP).
 Style: RPC e Document
 Service: Onde estão disponíveis os serviços.
Linguagem de Programação
WSDLs
 O código do webservice deve ser criado e o WSDL
obtido automaticamente? Ou Criamos o WSDL para
guiar nossa implementação?
 Mutação da Interface constante
 Aplicações independentes e não um sistema Distribuído
 Não orientada a consumidor
 Pode levar a dependência da liguagem de programação
do server.
Linguagem de Programação
WSDLs
 Limitações:
 UDDI – Integração e Descoberta de Descrição Universal


Forma de publicação de WSDLs
Não suporta qualquer WSDL
 Semântica do serviço oferecido

WSDL-S (Semântica)
 http://www.w3.org/Submission/WSDL-S/
Linguagem de Programação
SOAP
 Procolo projetado para ser independente de
plataforma e linguagem de programação.
 Interoperabilidade e intercomunicação entre
diferentes sistemas.
 Através da utilização de uma linguagem (XML) e
mecanismo de transporte (HTTP) padrões.
Linguagem de Programação
SOAP
 Definido pelo consórcio W3C.
 Protocolo baseado em XML para a troca de
informações em um ambiente distribuído (WSDL);
 Padrão de utilização com Web Services;
 Normalmente utiliza HTTP como protocolo de
transporte;
Linguagem de Programação
SOAP
 Envelope: É o elemento raiz do documento XML.
 Header: É um cabeçalho opcional. Quando utilizado, o Header deve ser o
primeiro elemento do Envelope.
 Body: Este elemento é obrigatório e contém o payload, ou a informação a ser
transportada para o seu destino final. O elemento Body pode conter um
elemento opcional Fault, usado para carregar mensagens de status e erros
retornadas pelos "nós" ao processarem a mensagem.
Linguagem de Programação
SOAP
 Exemplo prático de Webservice SOAP
Linguagem de Programação
SOAP
 Praticando...
Linguagem de Programação
REST
 REST - Representational State Transfer
 Técnica para sistemas hipermídia originado numa tese
de doutorado de Roy Fielding.
 Não estamos falando de uma biblioteca, plataforma,
aplicação, tecnologia, etc. Estamos falando de uma
técnica…assim como o MVC ou o Tableless, você usa se
quiser.
Linguagem de Programação
REST
 E o que o REST tem de diferente do SOAP?
 O REST defende o fato de que o protocolo HTTP é rico o bastante
para proporcionar Webservices, e não há necessidade de criar-se
nenhuma abstração para este fim. Para termos um Webservice
efetivo precisamos apenas de: um cliente, um serviço, informação,
um meio de “encapsular” esta informação (XML, JSON, YAML, etc)
e do meio para acessar esta informação (HTTP).
 PUT, GET, POST, DELETE...
Linguagem de Programação
REST
 Então o que o SOAP tem de diferente do REST?
 SOAP é um padrão aberto que define uma framework de
comunicação independente de linguagem e protocolo mas
que é baseada em XML. Isso quer dizer que, seja web ou não,
em Java ou PHP, a sua informação sempre será transferida de
uma forma padronizada, empacotada em SOAP. Obviamente
isto requer que tanto seu cliente, quanto seu servidor
(serviço) entendam o que é SOAP.
Linguagem de Programação
REST x SOAP
Linguagem de Programação
REST
 Exemplo prático de Webservice REST
Linguagem de Programação
REST
 Praticando...
Linguagem de Programação
Segurança em Webservices
 Segurança de Baixo Nível
 Segurança no nível de transporte.
 Serviços



Os Cliente e Webservices se conhecem.
Dados transicionados estão
codificados.
Integridade da mensagem enviada.
Linguagem de Programação
Segurança em Webservices
 HTTPS
 Certificado SSL
Linguagem de Programação
Segurança em Webservices
 Autenticação e Autorização do Usuário
 Autenticação – Usuário informa uma credencial
(Login/Senha) para o Webservice.
 Autorização – Restringir acesso dos usuários.
Linguagem de Programação
Segurança em Webservices
 WS-Security
 Especificação de Segurança publicada pelo grupo OASIS
(Organization for the Advancement of Structured
Information Standards).
 WS-Security suporta, integra e unifica vários modelos,
mecanismos e tecnologias de segurança em uso no
mercado, permitindo que vários sistemas possam
interoperar em plataformas e linguagens neutras.
 Extensão do SOAP para trabalhar com segurança
Linguagem de Programação
Segurança em Webservices
 Usando criptografia em WebServices
 BASE64
Linguagem de Programação
Segurança em Webservices
 Praticando...
Linguagem de Programação
Referências
 Livro
 Java Web Services, Martin Kalin, Ed. Alta Books.
 http://devedge-temp.mozilla.org/viewsource/2002/soap-
overview/index_pt_br.html
 http://www.profissionaisti.com.br/2009/03/webservices-conhecendoo-rest/
 http://saloon.inf.ufrgs.br/twikidata/Docs/OnlineDoc20051217200943/SegurancaWebService_WSSecu
rity.pdf
Linguagem de Programação
Perguntas?
Linguagem de Programação
Vilmar Santos Nepomuceno
Download