Desenvolvimento - ASP. NET
Curso ASP.NET 3.5 em VB.NET e C# - Criando e Consumindo WebServices
Um Web Service é uma aplicação web que disponibiliza um serviço qualquer. Quem usa o serviço é o consumidor. As informações trafegam sobre http, através de um protocolo conhecido com SOAP. O formato em que estar informações trafega é nada mais do que em XML.
por Fernando AmaralAo menos que você tenha estado em uma caverna nos últimos anos, com certeza já ouviu falar em XML e Web Service.
XML é um padrão de troca de informações, no formato texto. É um padrão aberto e legível até para humanos, por isso tem se tornado um padrão na indústria. Não vou ficar aqui explicando o que o XML é ou não é, pois existem toneladas de material na WEB sobre o mesmo, estou apenas o introduzindo já que ele é importantíssimo na funcionalidade dos Web Services.
Um Web Service é uma aplicação web que disponibiliza um serviço qualquer. Quem usa o serviço é o consumidor. As informações trafegam sobre http, através de um protocolo conhecido com SOAP. O formato em que estar informações trafega é nada mais do que em XML.
Vários outros acrônimos se aplicação a um Web Service. WSDL, ou Web Service Description Languagem é um arquivo disponibilizado pelo serviço com informações a quem estiver interessado em consumi-lo. Disco é um protocolo de busca de Web Services.
Com o advento do .NET, criar e consumir Web Services se tornou muito fácil. Quase tudo é feito “por trás das câmeras” e você precisa se preocupar unicamente com seu produto. Nesta seção vamos criar e consumir um Web Service.
Para criar um Web Service, vá em New Web Site, e selecione ASP.NET Web Service.
Por padrão é criado um arquivo asmx, que é equivalente a uma página aspx, porém sua função é prover serviços e não conteúdo. Cada arquivo asmx tem um arquivo .vb ou .cs equivalente, onde são criados os métodos a serem publicados.
Um método deve conter um atributo webmetodo, caso contrário ele estará disponível dentro da aplicação mas não externamente a esta. Se você examinar o arquivo .cs ou .vb criado, notará que já existe um método de demonstração criado automaticamente:
<WebMethod()> _ Public Function HelloWorld() As String Return "Hello World" End Function |
[WebMethod] public string HelloWorld() { return "Hello World"; } |
Vamos criar um método para realizar uma consulta em um banco de dados, em seguida vamos fazer uma aplicação para consumir este método.
Nosso método simplesmente vai receber uma consulta como parâmetro, executa-la usando classes do ADO.NET e retornar o resultado. Todo o restante é problema do FrameWork, nós não precisamos nos preocupar em gerar arquivos WSDL, gerar XML, incluí-lo na mensagem SOAP etc., tudo é feito de forma transparente.
Abaixo segue todo o arquivo service.vb / .cs
Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Data Imports System.Data.SqlClient
<WebService(Namespace:="http://tempuri.org/")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Public Class Service Inherits System.Web.Services.WebService
<WebMethod()> _ Public Function Consulta(ByVal SQL As String) As DataSet Dim Adapter As New SqlDataAdapter(SQL, "Data Source=SERVIDOR;Initial Catalog=AdventureWorks;User ID=sa;Password=123456") Dim Data As New DataSet Adapter.Fill(Data) Return Data End Function
End Class |
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Data; using System.Data.SqlClient;
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () {
//Uncomment the following line if using designed components //InitializeComponent(); }
[WebMethod] public DataSet Consulta(string SQL) { SqlDataAdapter Adapter = new SqlDataAdapter(SQL, "Data Source=SERVIDOR;Initial Catalog=AdventureWorks;User ID=sa;Password=123456"); DataSet Data = new DataSet(); Adapter.Fill(Data); return Data; }
} |
Note que a única parte adicionada foi o método Consulta.
Rode a aplicação, é exibida uma página com informações do Web Service:
Clique em Service Description, é exibido o arquivo WSDL gerado pelo ASP.NET, este arquivo contém informações sobre o serviço e é um meio de consulta para um aplicação que deseja consumi-la:
Você ainda pode testar o Web Service, para isso volte a página inicial, e clique sobre o nome do método Consulta. A página exibe um campo onde você deve entrar o valor do parâmetro, nesta casa SQL. Preencha com um comando SQL:
Clique em Invoke. O Resultado é exibido em uma nova janela:
Para consumir o serviço crie adicione uma nova aplicação ASP.NET a solução. Clique em propriedades, em seguida clique em Add Web Reference, é exibida a caixa de dialogo abaixo:
Clique em Web Service in this Solution. Na janela seguinte em Service, que o nome do serviço que criamos no nosso Web Service:
Em Web reference name mantenha o nome sugerido e clique em Add Rererence:
Agora vá a nossa página Default.aspx, adicione um GridView, e no evento OnLoad da página adicione o seguinte código:
Imports System.Data.SqlClient Imports System.Data Imports localhost.Service
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim Con As New localhost.Service Dim Ds As DataSet = Con.Consulta("SELECT * FROM” Person.Address" GridView1.DataSource = Ds GridView1.DataBind() End Sub |
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using localhost;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Service Con = new Service(); DataSet Ds = Con.Consulta("SELECT * FROM Person.Address"); GridView1.DataSource = Ds; GridView1.DataBind(); } } |
Rode a aplicação e observe o GridView ser preenchido.
Abstraia o fato de você estar rodando o serviço e o consumindo em uma mesma maquina, com um Web Service é possível trocar e fornecer informações de qualquer lugar, através de ambientes heterogêneos ou mesmo incomunicáveis de uma outra forma, utilizando um protocolo aberto e trocando informações através de um padrão reconhecido por toda a industria (XML).