web service

Propaganda
Web Services
Apresentação para a Febraban
Apresentação
• Objetivos da apresentação
– Demonstrar para stakeholders
(particularmente da Febraban) as
características técnicas da primeira
geração de web services do BC;
– Conteúdo essencialmente técnico.
Objetivos
• Portabilidade:
– O padrão escolhido deverá garantir a
portabilidade dos projetos sem afetar a
independência de plataforma cliente;
• RAD:
– O consumo de web services deverá ser
possível sem que as equipes de TI das IFs
tenham que se aprofundar nos meandros
de uma nova tecnologia.
Objetivos (cont.)
• Independência de IDE:
– O auxílio de uma IDE pode ser desejável,
mas não necessário;
• Interoperabilidade:
– Os web services devem poder ser
consumidos em outras plataformas (ex:
.NET).
Fatores decisivos
• Maturidade da solução open-source
(Axis);
• Integração com IDEs;
• Reutilização da segurança J2EE (rolebased);
• Escalabilidade (implementação serverside e stateless);
Passo 1: Definição do serviço
• SOA – Service Oriented Architecture
– Um serviço é uma função bem definida,
auto-contida e que não depende do estado
ou contexto de outros serviços;
Passo 2: Implementação
• Implementação do serviço:
– O serviço a ser fornecido via web service
deve ser identificado e “isolado” em uma
API tipicamente stateless;
– Normalmente este serviço já está
implementado no “legado”, bastando
definir e implementar uma API para seu
acesso na plataforma original.
Passo 3: Value Objects
• Parâmetros de entrada e saída:
– A API de um serviço deverá conter apenas
tipos “compatíveis” com web services
(tipos básicos, strings, arrays tipados ou
estruturas – VOs – destes tipos.
Passo 4: Criação do WS
• Definições de interesse público:
– Definição da API (e value objects);
– Geração da definição formal do web service
(WSDL);
– Se VOs forem compatíveis, o WSDL conterá uma
descrição completa das estruturas de dados
(mesmo as complexas);
– O WS é, na prática, implementado por uma
aplicação web comum (HTTP/HTTPS), sem o uso
de qualquer extensão proprietária.
Passo 5: Segurança
• Segurança em web services
– Não há padrão de facto – segurança delegada à
camada de transporte (HTTP/HTTPS);
• Criptografia:
– Acesso ao web service pode estar disponível
apenas via HTTPS;
• Segurança declarativa:
– URLs de acesso a web services podem exigir
autenticação (padrão J2EE);
– Métodos de negócio podem estar autorizados a
roles específicas (padrão J2EE);
Passo 6: Publicação do WS
• Publicação:
– A publicação do web service é, fisicamente, como
a publicação de uma aplicação web comum;
– A definição pública do web service (WSDL) estará
disponível para download pela própria aplicação
web que o implementa;
– API de web services será estável – modificações
e atualizações serão divulgadas com
antecedência (a exemplo do Catálogo de
Mensagens do SPB);
Passo 7: Consumo do WS
• Geração do cliente:
– Acesso à definição do web service (WSDL)
é tudo que basta;
– IDEs têm a capacidade de gerar stub
cliente a partir do WSDL;
Exemplos
• Exemplos de consumo
– Serão apresentados dois exemplos (.NET
e Java) de criação de aplicações que
consomem web services.
Cliente .NET
Criando um Cliente Web Services
utilizando Visual Studio
Criando uma Web reference
- botão direito,
opção add web
reference
Informando o endereço do WSDL
Classes geradas
• Ao criar uma Web reference, o Visual
Studio, de posse das informações
contidas no WSDL, cria todas as
classes necessárias. Neste exemplo,
são criadas:
-
ControleCliente
ResumoDoCliente
ResumoDaOperacao
ResumoDoVencimento
Formulário usado nos testes
Código C# (1/3)
using WindowsApplication1.WSControleCliente;
...
private void btnConsultar_Click(
object sender, System.EventArgs e) {
ControleClienteService controle = new
ControleClienteService();
controle.Credentials = new
System.Net.NetworkCredential(
txtUsuario.Text,
txtSenha.Text);
...
Código C# (2/3)
...
ResumoDoCliente resCliente =
controle.getResumoDoCliente(
txtCodCliente.Text,
txtTipoCliente.Text,
dtpData.Value);
ResumoDaOperacao[] listaResOperacao = resCliente.
listaDeResumoDasOperacoes;
...
Código C# (3/3)
...
txtResposta.Lines = new String[] {
"Cod. Cliente: " + resCliente.codigoDoCliente,
"Tipo Cliente: " +resCliente.tipoDoCliente,
"Modalidade da 1a operacao: " +
listaResOperacao[1].modalidade,
"CodVenc. do 1o venc. da 1a operacao: " +
listaResOperacao[1].listaDeVencimentos[1].
codigoVencimento};
...
Resultado da consulta
Cliente JAVA
Criando um Cliente Web Services
utilizando o JBuilder X (Axis)
Adicionando um Web Service
designer ao projeto
Importando um serviço, através de
uma URL
Classes geradas
• Após a importação, durante o build do projeto
o Jbuilder (utilizando se do Axis) cria cria
todas as classes necessárias para o acesso
aos métodos expostos. Além disso ele
também cria um “esqueleto” de uma classe
de teste para o serviço. São criadas (entre
outras) :
-
ControleClienteService
ResumoDoCliente
ResumoDoVencimento
ResumoDaOperacao
ControleClienteServiceTestCase
Código JAVA (1/3)
controleCliente.setUsername(USUARIO);
controleCliente.setPassword(SENHA);
String codCliente = "45988110";
String tipoCliente = "2";
Calendar data = Calendar.getInstance();
data.setTime(new Date("11/01/2002"));
ResumoDoCliente resCliente = null;
resCliente = controleCliente.getResumoDoCliente(
codCliente, tipoCliente, data);
Código JAVA (2/3)
ResumoDoCliente resCliente = null;
resCliente = controleCliente.getResumoDoCliente(
codCliente, tipoCliente, data);
ResumoDaOperacao[] listaResumoDaOperacao =
resCliente.getListaDeResumoDasOperacoes();
ResumoDoVencimento[] listaResumoDoVencimento =
listaResumoDaOperacao[1].getListaDeVencimentos(
);
Código JAVA (3/3)
System.out.println("Cod. Cliente: " +
resCliente.getCodigoDoCliente());
System.out.println("Tipo Cliente: " +
resCliente.getTipoDoCliente());
System.out.println("Modalidade da 1a operacao: "
+
listaResumoDaOperacao[1].getModalidade());
System.out.println("CodVenc. do 1o venc. da 1a
operacao: " +
listaResumoDaOperacao[1].getListaDeVencimentos(
)[1].getCodigoVencimento());
Resultado
Conclusões
• Simplicidade
– Todo o processo de desenvolvimento de
web services (e de seus clientes) se dá
sem que seja necessário conhecer a
sintaxe WSDL nem tampouco o protocolo
SOAP;
– Solução de segurança está nivelada ao
protocolo de transporte (SSL +
autenticação com usuários virtuais).
Download