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
- Curso de ADO.NET e BDP - Parte I
- Curso de ADO.NET e BDP - Parte II
- Curso de ADO.NET e BDP - Parte III
- Curso de ADO.NET e BDP - Parte IV
- Curso de ADO.NET e BDP - Parte V
- Curso de ADO.NET e BDP - Parte VI
- Curso de ADO.NET e BDP - Parte VII
- Curso de ADO.NET e BDP - Parte VIII
- Curso de ADO.NET e BDP - Parte IX
- Curso de ADO.NET e BDP - Parte X
- Curso de ADO.NET e BDP - Parte XI
- Curso de ADO.NET e BDP - Parte XII
- Curso de ADO.NET e BDP - Parte XIII
- Curso de ADO.NET e BDP - Parte XIV
- Curso de ADO.NET e BDP - Parte XV
- Curso de ADO.NET e BDP - Parte XVI
- Curso de ADO.NET e BDP - Parte XVIII
- Curso de ADO.NET e BDP - Parte XIX
- Curso de ADO.NET e BDP - Final