web services - febraban

Upload: felipe-herbst-rosa

Post on 09-Jul-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Web ServicesApresentao para a Febraban

Apresentao Objetivos da apresentao Demonstrar para stakeholders (particularmente da Febraban) as caractersticas tcnicas da primeira gerao de web services do BC; Contedo essencialmente tcnico.

Objetivos Portabilidade: O padro escolhido dever garantir a portabilidade dos projetos sem afetar a independncia de plataforma cliente;

RAD: O consumo de web services dever ser possvel sem que as equipes de TI das IFs tenham que se aprofundar nos meandros de uma nova tecnologia.

Objetivos (cont.) Independncia de IDE: O auxlio de uma IDE pode ser desejvel, mas no necessrio;

Interoperabilidade: Os web services devem poder ser consumidos em outras plataformas (ex: .NET).

Fatores decisivos Maturidade da soluo open-source (Axis); Integrao com IDEs; Reutilizao da segurana J2EE (rolebased); Escalabilidade (implementao serverside e stateless);

Passo 1: Definio do servio SOA Service Oriented Architecture Um servio uma funo bem definida, auto-contida e que no depende do estado ou contexto de outros servios;

Passo 2: Implementao Implementao do servio: O servio a ser fornecido via web service deve ser identificado e isolado em uma API tipicamente stateless; Normalmente este servio j est implementado no legado, bastando definir e implementar uma API para seu acesso na plataforma original.

Passo 3: Value Objects Parmetros de entrada e sada: A API de um servio dever conter apenas tipos compatveis com web services (tipos bsicos, strings, arrays tipados ou estruturas VOs destes tipos.

Passo 4: Criao do WS Definies de interesse pblico: Definio da API (e value objects); Gerao da definio formal do web service (WSDL); Se VOs forem compatveis, o WSDL conter uma descrio completa das estruturas de dados (mesmo as complexas); O WS , na prtica, implementado por uma aplicao web comum (HTTP/HTTPS), sem o uso de qualquer extenso proprietria.

Passo 5: Segurana Segurana em web services No h padro de facto segurana delegada camada de transporte (HTTP/HTTPS);

Criptografia: Acesso ao web service pode estar disponvel apenas via HTTPS;

Segurana declarativa: URLs de acesso a web services podem exigir autenticao (padro J2EE); Mtodos de negcio podem estar autorizados a roles especficas (padro J2EE);

Passo 6: Publicao do WS Publicao: A publicao do web service , fisicamente, como a publicao de uma aplicao web comum; A definio pblica do web service (WSDL) estar disponvel para download pela prpria aplicao web que o implementa; API de web services ser estvel modificaes e atualizaes sero divulgadas com antecedncia (a exemplo do Catlogo de Mensagens do SPB);

Passo 7: Consumo do WS Gerao do cliente: Acesso definio do web service (WSDL) tudo que basta; IDEs tm a capacidade de gerar stub cliente a partir do WSDL;

Exemplos Exemplos de consumo Sero apresentados dois exemplos (.NET e Java) de criao de aplicaes que consomem web services.

Cliente .NETCriando um Cliente Web Services utilizando Visual Studio

Criando uma Web reference- boto direito, opo add web reference

Informando o endereo do WSDL

Classes geradas Ao criar uma Web reference, o Visual Studio, de posse das informaes contidas no WSDL, cria todas as classes necessrias. Neste exemplo, so criadas:ControleCliente ResumoDoCliente ResumoDaOperacao ResumoDoVencimento

Formulrio usado nos testes

Cdigo 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); ...

Cdigo C# (2/3)... ResumoDoCliente resCliente = controle.getResumoDoCliente( txtCodCliente.Text, txtTipoCliente.Text, dtpData.Value); ResumoDaOperacao[] listaResOperacao = resCliente. listaDeResumoDasOperacoes; ...

Cdigo 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 JAVACriando um Cliente Web Services utilizando o JBuilder X (Axis)

Adicionando um Web Service designer ao projeto

Importando um servio, atravs de uma URL

Classes geradas Aps a importao, durante o build do projeto o Jbuilder (utilizando se do Axis) cria cria todas as classes necessrias para o acesso aos mtodos expostos. Alm disso ele tambm cria um esqueleto de uma classe de teste para o servio. So criadas (entre outras) :ControleClienteService ResumoDoCliente ResumoDoVencimento ResumoDaOperacao ControleClienteServiceTestCase

Cdigo 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);

Cdigo JAVA (2/3)ResumoDoCliente resCliente = null; resCliente = controleCliente.getResumoDoCliente( codCliente, tipoCliente, data); ResumoDaOperacao[] listaResumoDaOperacao = resCliente.getListaDeResumoDasOperacoes(); ResumoDoVencimento[] listaResumoDoVencimento = listaResumoDaOperacao[1].getListaDeVencimentos( );

Cdigo 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

Concluses Simplicidade Todo o processo de desenvolvimento de web services (e de seus clientes) se d sem que seja necessrio conhecer a sintaxe WSDL nem tampouco o protocolo SOAP; Soluo de segurana est nivelada ao protocolo de transporte (SSL + autenticao com usurios virtuais).