web services apresentação para a febraban. apresentação objetivos da apresentação...
TRANSCRIPT
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 (role-based);
• Escalabilidade (implementação server-side 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
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# (1/3)
...
ResumoDoCliente resCliente = controle.getResumoDoCliente(
txtCodCliente.Text,
txtTipoCliente.Text,
dtpData.Value);
ResumoDaOperacao[] listaResOperacao = resCliente.
listaDeResumoDasOperacoes;
...
Código C# (2/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};
...
Código C# (3/3)
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
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 (1/3)
ResumoDoCliente resCliente = null;
resCliente = controleCliente.getResumoDoCliente(
codCliente, tipoCliente, data);
ResumoDaOperacao[] listaResumoDaOperacao = resCliente.getListaDeResumoDasOperacoes();
ResumoDoVencimento[] listaResumoDoVencimento = listaResumoDaOperacao[1].getListaDeVencimentos();
Código JAVA (2/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());
Código JAVA (3/3)
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).