Um serviço web é uma função baseada em rede que pode ser obtida por aplicativos web por meio de protocolos de rede web. O desenvolvimento de serviços da Web inclui principalmente os três aspectos a seguir:
Criar serviço web
Criar servidor proxy
Usar serviços da web
Um serviço web é um aplicativo web. Sua forma básica é uma classe que contém vários métodos que podem ser chamados por outros aplicativos. Ele também usa uma estrutura de código oculta, como uma página web ASP.NET, mas não possui uma interface de usuário.
Para entender melhor esse conceito vamos criar um serviço web que forneça informações sobre preços de ações. Os clientes do serviço podem consultar nomes e preços relacionados por meio de uma etiqueta de ação. Para simplificar este exemplo, definimos o preço das ações para um valor fixo e guardamo-lo numa lista bidimensional. Este serviço web contém três métodos:
Um método HelloWorld padrão
Um método GetName
Um método GetPrice
Execute as seguintes etapas para criar o serviço:
Etapa (1) : Selecione Arquivo -> Novo -> Site no Visual Studio e selecione Serviço Web ASP.NET.
Etapa (2) : Um arquivo de serviço da web chamado Service.asmx e seu código estão ocultos e Service.cs será criado no caminho App_Code deste projeto.
Etapa (3) : Altere os nomes dos arquivos para StockService.asmx e StockService.cs.
Etapa (4) : O arquivo .asmx simplifica uma instrução WebService da seguinte forma:
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
Etapa (5) : Abra o arquivo StockService.cs O código gerado neste arquivo é o código básico do serviço Hello World. O código do serviço web padrão é o seguinte:
usando System.Collections; usando System.Web.Services.Protocols; ; namespace StockService { // <summary> // Descrição resumida do Service1 // <summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Para permitir que este serviço da Web seja chamado a partir do script, // usando ASP.NET AJAX, remova o comentário da seguinte linha. classe pública Service1: System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World" } } };
Etapa (6) : Modifique o código no arquivo para adicionar um ponteiro bidimensional que armazena a string do rótulo, nome e preço de cada ação, e escreva dois métodos da web para obter informações de estoque da seguinte forma;
usando System.Linq; usando System.Web; usando System.Web.Services.Protocols; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // Para permitir que este serviço da Web seja chamado a partir do script, // usando ASP.NET AJAX, remova o comentário a seguinte linha. // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { //Remova o comentário se estiver usando componentes projetados //InitializeComponent() }; string [,] ações = { {"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "Banco ICICI", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} } [WebMethod] público; string HelloWorld() { return "Hello World" } [WebMethod] public double GetPrice(string symbol) { //leva o símbolo como parâmetro e retorna o preço para (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i , 2]); } return 0; } [WebMethod] public string GetName(string symbol) { // Toma o símbolo como parâmetro e // retorna o nome do estoque for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1] } return "Stock Not Found" } }
Etapa (7) : A execução do aplicativo de serviço da web fornece uma página de teste de serviço da web onde podemos testar os métodos de serviço.
Etapa (8) : Clique no nome de um método para confirmar se ele está funcionando corretamente.
Passo (9) : Para detectar o método GetName, forneça uma das tags de estoque já definidas. Se correto, o nome do estoque relevante será retornado.
Para utilizar este web service, criamos um site sob a mesma solução (Solução). Basta clicar com o botão direito do mouse no nome da solução no gerenciador de soluções. A página web chamada pelo web service deverá ter um gerenciamento de controle para exibir o resultado de retorno e dois. botões de controle, um para retornar e outro para iniciar a chamada para o serviço.
O conteúdo do arquivo do aplicativo da web é o seguinte:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// PT" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Página sem título </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>Usando o serviço de estoque</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="Post Back" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Obter Estoque" /> </div> </form> </body> </html>
O código da aplicação web é o seguinte:
usando System.Collections; usando System.Web.UI; usando System.Web.HtmlControls; ; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; { classe parcial pública _Default: System.Web.UI.Page { protegido void Page_Load (objeto remetente, EventArgs e) { if (! IsPostBack) { lblmessage.Text = "Primeiro tempo de carregamento: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack em: " + DateTime.Now.ToLongTimeString(); btnservice_Click(objeto remetente, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Preço atual do SATYAM:{0}", proxy.GetPrice("SATYAM").ToString() } } }
Um servidor proxy refere-se a um substituto para o código do serviço da web. Antes de usar o serviço web, devemos criar um servidor proxy. Este servidor proxy é registrado pelo aplicativo cliente. O aplicativo cliente então implementa a chamada ao serviço web como se estivesse usando um método nativo.
O servidor proxy fará a chamada e a enviará ao servidor no formato apropriado como uma solicitação SOAP. SOAP oferece suporte ao protocolo de acesso a objetos simples. Este protocolo é adequado para troca de dados de serviços da web.
Quando o servidor responde e retorna um pacote SOAP ao cliente, o servidor proxy apresenta tudo ao aplicativo cliente.
Antes de chamar o serviço web usando btnservice_click, o aplicativo web deve ser adicionado ao aplicativo. Isso criará de forma transparente uma classe de proxy que pode ser usada pelo evento btnservice_click.
protegido void btnservice_Click (objeto remetente, EventArgs e) {Proxy StockService = new StockService(); ;
Siga as seguintes etapas para criar um proxy:
Etapa (1) : Clique com o botão direito na entrada do aplicativo da web no Solution Explorer e selecione 'Adicionar referência da web'.
Etapa (2) : Selecione 'Web Services nesta solução' e a referência do serviço de estoque que escrevemos será retornada.
Passo (3) : Clique no serviço para abrir a página de teste. Ao criar o proxy, o padrão é 'localhost'. Claro, você também pode renomeá-lo. Clique em 'Adicionar Referência' para adicionar um proxy ao aplicativo cliente.
Adicione a seguinte instrução ao seu código para incluir o agente:
usando localhost;