You are on page 1of 31

Web Services

Apresentao 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 .NET
Criando 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 JAVA
Criando 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).

You might also like