Curso de ADO.NET e BDP - Parte XVII

Acesso a dados no Delphi 8 for .NET

 

Parte XVII – Trafegando DataSets via Web Services

Quando começamos a estudar o ADO.NET neste curso, você deve lembrar que DataSets podem ser completamente expressos em formato XML. Dessa forma, fica muito simples trafegar dados pela Web ou mesmo através de diferentes dispositivos. Podemos, por exemplo, oferece consultas a um BD através de qualquer ponto da Internet que possa acessar nosso Web Service, sem que seja necessário qualquer tipo de configuração extra, instalação de bibliotecas, configuração de acesso ao BD etc. Tudo é feito no servidor, o cliente apensar faz requisições SOAP e recebe dados em XML.

Criando o servidor

Para ver como isso funciona na prática, no Delphi 2005, crie uma nova aplicação Web Service chamada AppDados.

 

 

 

 

Dê o nome de WSDados para a classe do Web Service e Dados para o arquivo asmx.

 

 

 

Coloque no Designer um BdpConnection apontando para o banco Employee, um BdpDataAdater e um DataSet. Aponte o BdpDataAdater.SelectCommand.Connection para o BdpConnection1 e o BdpDataAdater1.DataSet para o DataSet1.

 

 

No editor, clique na aba Code e adicione o seguinte método à classe criada:

 

[WebMethod]

function Execute(SQL: string): DataSet;

 

O atributo WebMethod indica que o método é de Web Service de poderá ser invocado remotamente. Implemente-o conforme mostrado a seguir:

 

function TWebService1.Execute(SQL: string): DataSet;

begin

  BdpDataAdapter1.SelectCommand.CommandText := SQL;

  BdpDataAdapter1.Active := True;

  result := DataSet1;

end;

 

O método anterior recebe uma instrução Select por parâmetro, processa no servidor Interbase e devolve o resultado em formato XML. Observe que o resultado da função é um DataSet do ADO.NET, que é automaticamente serializado para envio através de http.

Consumindo Web Services em uma aplicação Windows Forms

Faremos dois exemplo simples para consumir o Web Service anterior, um do tipo Windows Forms e outro do tipo Web Forms.

No Delphi 2005, inicie um nova aplicação Windows Forms:

 

 

Coloque no formulário principal os seguintes componentes: TextBox, Button e DataGrid.

 

 

Referenciando o Web Service

Vamos adicionar uma referência ao Web Service criado anteriormente. No Project Manager clique de direita no nome do assembly e escolha Add Web Reference:

 

 

Na janela que aparece (o UDDI browser da IDE) coloque a URL do Web Service:

 

 

 

 

Clique em Add Reference para adicionar a referência ao Web Service e criar as classes proxy. Seu Project Manager deve ficar assim:

 

 

A unit localhost.Dados.pas contém a classe proxy, que se encarrega de mapear as chamadas locais para o servidor remoto. Isso permite que façamos chamadas ao Web Service como se fossem de um objeto local.

No evento Click do botão digite:

 

uses localhost.Dados;

...

var

  ws: localhost.Dados.WSDados;

begin

  ws := WSDados.Create;

  DataGrid1.DataSource := ws.Execute(TextBox1.Text); 

end;

 

Execute e teste a aplicação digitando um comando Select no TextBox. A instrução é enviada ao servidor, que processo a consulta devolve os dados em XML:

 

 

Consumindo Web Services em uma aplicação ASP.NET Web Forms

A versão Web Forms do exemplo é praticamente idêntica, basta colocar os Web Controls em um formulário de uma nova aplicação ASP.NET, adicionar a Web Reference e digitar o mesmo código no evento Click do botão, chamando a seguir o método DataBind.

 

 

Download

Você pode fazer download de todos os exemplos deste curso a partir do endereço http://cc.borland.com/cc/ccweb.exe/author?authorid=222668

Leia todos artigos da série