Post on 09-Jul-2015
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).