Desenvolvimento - ASP. NET
ASP.NET - WebServices para Iniciantes
Acompanhando a evolução e padronização da internet como mais um meio de comunicação, sugiram no mercado novas ferramentas de desenvolvimento como o ASP.NET da Microsoft e novos padrões como o WebServices que vamos discutir nesse artigo.
por Ramon DurãesOs WebServices funcionam de forma semelhante a um componente que você instala na maquina local. Porém esse componente pode ficar residente em qualquer maquina, seja ela na sua empresa, na empresa de terceiros ou até na "China". É isso mesmo, até na "China". Então usando a internet e o XML (Extensible Markup Language) para troca de informações você executa um método desse componente que dispara o processamento no servidor remoto e você recebe a resposta na sua aplicação. A principal diferença em relação aos componentes atuais é a padronização do XML para troca de informações, fazendo com que a comunicação do mesmo ultrapasse as barreiras dos Firewall impostos para segurança de nossas redes. Pois a unica coisa que trafega é o XML e usando a porta 80 (Padrão) em conjunto com o já conhecido HTTP e o SOAP(Sabão) que cuida do transporte dos dados. Para troca de informação entre a aplicação e o WebServices é necessário que essa aplicação conheça o funcionamento do mesmo, isso é feito por meio da leitura do WSDL. Nada mais é que um documento ou "contrato" em xml que contém todas as regras do WebServices. Ainda temos mais uma sigla a falar que é o UDDI, uma espécie de paginas amarelas de WebServices, cujo objetivo é encontrar facilmente os links para os componentes.
Ao contrário do que muitos pensam, o padrão WebServices não é proprietário da Microsoft, pelo contrário é definido por um consórcio de diversas empresas WS-I conforme Figura 1 de forma a manter a integração entre todas as plataformas que venham a utilizar esse padrão, permitindo assim a perfeita comunicação e troca de informações. O que aconteceu é que a Microsoft acreditou desde cedo no XML e investiu muito em todos os seus produtos, principalmente na plataforma .NET, permitindo assim a fácil e rápida integração com seus produtos.
Figura 01 - WS-I - Padronizador do WebServices
No ambiente .NET os WebServices se encaixam dentro do grupo de aplicações ASP.NET conforme visto na Figura 2.
Figura 02 - WebServices Dentro do .NET Framework
O XML foi adotado por já ser um padrão da industria e ser independente
da plataforma adotada, sendo ainda controlado pelo World Wide Web
Consortium (W3c). Facilmente você consegue transformar o mesmo em outro
formato independente da aplicação entender o xml.
SEM XML
APRENDA ASP.NET, RAMON DURAES , R$ 10,00
COM XML
<Livro>
<Descricao> APRENDA ASP.NET </Descricao>
<Autor> Ramon Durães </Autor>
<Preco> R$ 10,00 </Preco>
</Livro>
Implementando WebServices
Na plataforma .NET essa implementação é bastante simples como vou
demonstrar nesse artigo e consiste de duas partes:
- Criar um WebServices (Para ser utilizado por terceiros)
- Consumir um WebServices (Desenvolvido por terceiros)
Portanto definido se você quer criar ou consumir um WebServices grande
parte do trabalho de implementação já é feita automaticamente pela
plataforma .NET não necessitando por parte do programador em se preocupar
com a troca de informação do XML e utilização do SOAP ou WSDL.
Então para criar um WebServices você pode adicionar pelo Visual Studio
um arquivo do tipo *.asmx a um projeto ASP.NET ou conforme esse exemplo
iniciar um novo projeto especifico para WebServices conforme Figura 3
e Figura 4.
Figura
03 - Iniciando novo projeto WebServices
Figura 4 - Solution Explorer A primeira coisa que você vai observar é a extensão do arquivo, para
WebServices o .NET utiliza o *.asmx, observe também que esse
projeto não tem interface, portanto você não pode arrastar componentes
para montar layout. O propósito então é criar uma classe (Componente)
que seja visualizada dentro de outra aplicação. Para iniciarmos efetue
dois cliques no formulário e vamos ao código conforme Figura 5.
Observe que o código é igual ao de uma outra classe qualquer e realmente
é igual mesmo. A única diferença é o atributo <WebMehod()>_ que
você tem que colocar em cada método que você queria tornar visível
pelo WebServices. A segunda coisa que você vai ter que observar é os
tipos de retornos dos métodos. Para o caso de WebServices você somente
pode utilizar os tipos: Array,String,Int,DataSet,Boolean...
Chamando a atenção para o tipo DataSet, que por ser baseado em XML pode
ser serializado e transportado facilmente pela web. Sendo completamente
recuperado do outro lado. Altere o código pelo apresentando na Listagem
01. Esse exemplo está criando dois métodos, o primeiro realiza a soma
de dois números e os segundo, realiza uma consulta no banco de dados e
retorna os dados.
Figura 05 - Classe padrão do Web Services
Listagem
01 - Criando métodos Imports
Imports System.Data.SqlClient
<System.Web.Services.WebService(Namespace := "http://tempuri.org/wstreinamento/Service1")> _
Public
Class Service1Inherits System.Web.Services.WebService
<WebMethod(Description:="Somar valores")> _
Public Function Somar(ByVal
intValor1 As Int32, ByVal
IntValor2 As Int32) As
Int32
Return intValor1 + IntValor2
End Function
<WebMethod(Description:="Consulta banco de dados e retorna
DataSet")> _
Function RetornaDataSet(ByVal strQuery
As String) As
DataSet
Dim conn As New
SqlConnection
Dim cmd As New
SqlCommand
Dim da As New
SqlDataAdapter
Dim ds As New
DataSet
"Lembre de alterar os dados de acesso ao banco de dados
conn.ConnectionString = "Data Source=localHost; User ID=sa; Password=;Initial
Catalog= Northwind;"
cmd.Connection = conn
cmd.CommandText = strQuery
da.SelectCommand = cmd
da.Fill(ds)
conn.Dispose()
cmd.Dispose()
da.Dispose()
Return ds
End Function
End Class
Vamos utilizar neste teste uma aplicação
Winforms, poderia ser uma para PocketPC ou mesmo outra Web. E até outras
plataformas que tenham suporte a WebServices.
Mais uma vez observando o
código apresentado deduzimos claramente que a implementação não tem
diferença de nenhuma outra classe, deixando esse processo completamente
simples e é isso mesmo. Seu WebServices já está pronto e o .NET oferece
uma interface de teste para que possamos ver o resultado antes de enviar para o cliente. Para isso basta acessar pela sua maquina a url do mesmo http://localhost/wstreinamento/service1.asmx
e confira o resultado apresentado na Figura 6.
Figura 06 - Interface de testes do WebServices
Agora clicando no link Somar, veja o resultado na Figura 07 e
Figura 08.
Figura 07 - Método somar
Figura 08 - XML Resultante da soma dos valores no servidor
Achou fácil até esse ponto? Imagine o próximo método RetornaDataSet,
confira na Figura 9 e 10.
Figura 09 - Passando uma query sql como parametro
Figura 10 - XML resultante da consulta ao banco de dados.
Fantástico hein!!! Seu WebServices já está funcionando. Você não
precisa implementar mais nada. Basta passar o link do WSDL (Figura 6)
para quem for utilizar e pronto. Até o WSDL ele gera automaticamente
confira na Figura 11.
Figura 11 - WSDL gerado automaticamente
Agora vamos consumir esse WebServices, para nosso exemplo poderíamos
utilizar qualquer aplicação .NET, afinal WebServices é um componente como
outro qualquer.
Inicie um novo projeto, depois nesse projeto no Solution Explorer escolha
ADD WebReference conforme Figura 12. E entre com a url do WSDL http://localhost/wstreinamento/service1.asmx?WSDL
conforme Figura 13 , depois defina o nome do NameSpace (Espaço de
nome) para classe que o .net vai gerar de forma a disponibilizar o
WebServices dentro do código, confira na Figura 14.
Figura 12 - Adicionando referencia Web ( WebServices)
Figura 13 - Adicionando referencia Web ( WebServices)
Figura 14 - Alterando nome da referencia
Finalmente após concluir a etapa da Figura 14 você criou um novo
NameSpace que vai conter a classe para esse WebServices, neste ponto o
.NET criou outras classes internas que chamamos de "Proxy" para
encapsular a trocar de informações. Agora adicione 01 DataGrid, 01
TextBox (ID=txtConsulta) e 01 Button conforme Figura 15. Depois
efetue dois cliques no botão e adicione o código da Listagem 2.
Figura 15 - Montando formulário para testes
Listagem
02 - Adicionando código para consulta ao WebServices
Private
Dim ws As New
wsFacil.Service1
Me.DataGrid1.DataSource = ws.RetornaDataSet(txtConsulta.Text).Tables(0)
End Sub
Após adicionar o código
você verá que sua aplicação vai realizar consulta no banco de dados,
sem que você tenha feito nenhuma codificação para isso. Comprove na Figura
16. Volte a
imaginar se essa url fosse de um computador na "China" você
estaria daqui efetuando uma consulta lá e recebendo os dados. Cabe a
você implementar todos métodos e utilizar esse recurso a vontade.
Figura 16 - Testando o aplicativo
Finalizando
WebServices é
um dos assuntos mais tratados no momento pela facilidade de integração
entre ambientes diferentes, e por que está seguindo uma linha de
padronização permitindo a total integração. Sendo assim esse
WebServices que você implementou pode ser utilizado por outra plataforma
não .NET e vice-versa. O diferencial que você vai encontrar aqui é a
facilidade de implementação. Isso realmente é indiscutível e tem
trazido grande mercado para plataforma .NET. Existem outros temas ainda
relacionados como segurança que fica para próximo artigo!!
"Use
.NET não é mais necessário reinventar a roda..."
» Download
código fonte
O que você gostaria de saber?
Aguardo seu comentário! Ele é muito importante. Participe!!! Até
próximo artigo!
Você é de Salvador Bahia, então participe do grupo de usuários .NET http://www.mutex.com.br