Com o
Visual Studio 2005 (VS 2005) ou mesmo com o
Visual Web Developer (VWD) ficou muito mais fácil criar os seus próprios Web Services. Você duvida ? Então veja:
Roteiro para criar um web service:
1. Abra o
Visual Web Developer Express Edition e no menu File selecione New Web Site
2. Quando a janela de diálogo New Web Site for exibida, selecione a linguagem (VB.NET) e a localização do Web Site
3. Na janela Solution Explorer clique com o botão direito do mouse no web site e selecione Add New Item. Quando a janela de diálogo Add New Item surgir selecione : 1-O item Web Service 2-Informe o nome do web service 3- Selecione a linguagem 4-Marque a opção - Place code in separate File; Clique no botão Add.
4. O
Visual Web Developer irá criar uma pasta para o web site que contém um arquivo wsNet.asmx e um arquivo code-behind para o web service. O arquivo code-behind wsNet.vb para o arquivo .asmx será colocado em uma pasta App_Code.
5. O Web Service já é completamente funcional, mas neste momento ele é apenas uma casca sem nenhuma funcionalidade útil.
O seu trabalho é justamente incluir métodos no arquivo code-behind para expor as funcionalidades desejadas para o seu web service. Como exemplo vamos criar um método no nosso web service para retornar os dados de uma tabela.
Nota: Para este exemplo eu vou utilizar o
SQL Server 2005 Express, criar um banco de dados Clientes.mdf e uma tabela Clientes com os seguintes campos: Codigo,Nome,Endereco,Foto e Renda conforme mostrado na janela DataBase Explorer (Figura 3):
Figura 3
Os web services são uma ferramenta muito útil para efetuar a comunicação com sistemas remotos ou com sistemas construídos com tecnologias diferentes da usada para criar sua aplicação. Eles são convenientes para encapsular componentes legados COM especialmente quando você necessita acessar funcionalidades nestes componentes a partir de domínios diferentes.
Na ASP.NET um web service consiste de um arquivo .asmx e de uma classe code-behind que fornece a funcionalidade requerida. O conteúdo de um arquivo .asmx consiste de uma única linha que contém a diretiva WebService. A linha é igual a diretiva @ Page usada em um arquivo .aspx . Abaixo temos esta visão do nosso arquivo wsNet2.asmx:
O conteúdo do arquivo code-behind para o web service consiste de uma classe que herda de System.Web.Services.WebService e apresenta um método HelloWorld;
Além disto é incluído um atributo WebService para a definição da classe. Embora não seja explicitamente necessário o atributo WebService permite que você defina o namespace para o web service. Por padrão o namespace é definido para
http://tempuri.org/, mas você pode alterar este valor definindo-o para uma URL que represente a sua empresa como http://www.codigofonte.net (Veja figura 5).
Figura 5
VWD e o
VS 2005 inclui também um atributo WebServiceBinding para a classe do web service. Este atributo indica que o web service que está em conformidade com a especificação
WS-I BP 1.1 - Web Services Interoperability Basic Profile specification, para detalhes acesse:
http://www.ws-i.org.
Para você incluir funcionalidades úteis a um web service você cria métodos como se fosse qualquer outra classe, exceto pelo fato que você precede cada método com o atributo WebMethod. O atributo WebMethod informa o
VWD/VS 2005 que o método é para ser exposto como parte de um web service.
Por exemplo, o método getListaClientes que será mostrado no nosso exemplo consulta uma base de dados por uma lista de clientes e retorna a lista em um DataSet. O número de clientes retornados é definido pelo parâmetro numeroDeClientes. Nada de especial é feito no código para suportar o web service. O
VWD/VS 2005 e o
.NET Framework cuida da criação do XML e do encapsulamento SOAP usado para transferir os dados para o cliente.
Uma das grandes vantagens de criar web services com o
VWD/VS 2005 e ASP.NET é a funcionalidade de teste e debug fornecidas pela ASP.NET. Ela fornece uma série de páginas que criam testes que podem ser usados para testar todos os métodos expostos do web service; além disto você pode definir breakpoints (pontos de parada de debug) no código do web service de maneira a percorrer passo a passo o código e assim efetuar a verificação da operação.
Vamos agora a parte prática que é criar o método getListaClientes para obter os dados da tabela Clientes do banco de dados Clientes.mdf criado no SQL Server 2005. Vamos exibir as informações dos campos : Codigo,Nome e Endereco.
Abra o arquivo wsNet2.vb e inclua o seguinte código:
Option Explicit On
Option Strict On
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
_
_
_
Public Class wsNet2
Inherits System.Web.Services.WebService
_
Function getListaClientes(ByVal numeroDeClientes As Integer) As DataSet
Dim dbConn As SqlConnection = Nothing
Dim da As SqlDataAdapter = Nothing
Dim dSet As DataSet = Nothing
Dim cmdTexto As String
Dim strSQL As String
Try
'Obtem a string de conexão do web.config e abre a conexao com o banco de dados
cmdTexto = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString
dbConn = New SqlConnection(cmdTexto)
dbConn.Open()
'Define a consulta SQL para obter os dados da tabela Clientes
strSQL = "SELECT Top " & numeroDeClientes.ToString() & " " & _
"Codigo, Nome, Endereco " & _
"FROM Clientes " & _
"ORDER BY Nome"
'cria um novo dataset e preenche-o com os dados dos clientes
dSet = New DataSet
da = New SqlDataAdapter(strSQL, dbConn)
da.Fill(dSet)
'retorna a lista de clientes
Return (dSet)
Finally
'limpa a memoria
If (Not IsNothing(dbConn)) Then
dbConn.Close()
End If
End Try
End Function
End Class
Para testar o web service rode o projeto usando o servidor ASP.NET. Será apresentada a seguinte página referente ao arquivo wsNet2.asmx
Veja o método GetListaClientes definido no arquivo wsNet2.vb
Quando você clicar no link GetListaClientes será apresentada a página abaixo onde você deve informar o parâmetro que indica quantos clientes deseja obter referente ao parâmetro numeroDeClientes. Esta página exibe o conteúdo da requisição XML e mensagem response para o método usando SOAP, Get HTTP e Post HTTP.
Ao informar o valor do parâmetro e clicar no botão Invoke, a ASP.NET gera uma requisição HTTP e submete-a ao web service. O Web Service responde com um HTTP response contendo os dados requisitados no formato XML. Para o exemplo é retornado a lista de 2 clientes solicitados conforme figura abaixo:
Nada de muito complexo não é mesmo? É óbvio que podemos criar web services mais complexos, isto fica com vocês! :)
Até mais.
referências: http://www.w3.org/TR/wsdl
Por José Carlos Macoratti (www.macoratti.net) e Adaptado por Emmanuel Alves (www.codigofonte.net)