Olá! Monday, 11 de November de 2024.



Dicas CódigoFonte.net
Wednesday, 27 de December de 2006

ASP.NET 2.0 - Criando Web Services

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.

Clique para ver a imagem em seu tamanho real

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.

Clique para ver a imagem em seu tamanho real

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):

Clique para ver a imagem em seu tamanho real
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:

Clique para ver a imagem em seu tamanho real

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).

Clique para ver a imagem em seu tamanho real
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

Clique para ver a imagem em seu tamanho real
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.

Clique para ver a imagem em seu tamanho real

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:

Clique para ver a imagem em seu tamanho real

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)

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010