ASP.NET 2.0 - Criando Web Services
Então você quer criar o seu próprio Web Service usando ASP.NET 2.0 ? |
Nota: Veja também os artigo: ASP.NET - Criando Web Services e VB .NET - Criando WebServices
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:
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: Para saber como criar um banco de dados, uma tabela e incluir dados no SQL Server 2005 Express leia os artigos:
|
|
Os web services são uma ferramenta muito útil para efetua 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.macoratti.net
O VWD e o VS 2005 inclui também um atributo WebServiceBinding para a classe do web service. Este atributo indica que o web service esta em conformidade com a especifica WS-I BP 1.1 - Web Services Interoperability Basic Profile specification, para detalhes veja : 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 cria um testes que pode ser usado para testar todos os métodos expostos do web service; além disto você pode definir breakpoints 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.Data
Imports System.Data.SqlClient Imports System.Web.Services Imports System.Web.Services.Protocols
<WebService(Namespace:="http://tempuri.org/")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Public Class wsNet2
Inherits System.Web.Services.WebService Function getListaClientes(ByVal numeroDeClientes As Integer) As DataSet
Dim da As SqlDataAdapter = Nothing Dim dSet As DataSet = Nothing Dim cmdTexto As String
Dim strSQL As String '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)
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
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 rebuscado não é mesmo. É óbvio que podemos criar web services mais complexos e com maior utilidade.
Até o próximo artigo ASP.NET...
referências: http://www.w3.org/TR/wsdl
José Carlos Macoratti