Serviços da Web - Exemplos
Com base na arquitetura de serviço da web, criamos os dois componentes a seguir como parte da implementação de serviços da web -
Provedor de serviços ou editor
Este é o provedor do serviço da web. O provedor de serviços implementa o serviço e o disponibiliza na Internet ou intranet.
Vamos escrever e publicar um serviço web simples usando .NET SDK.
Solicitante ou consumidor de serviço
Este é qualquer consumidor do serviço da web. O solicitante utiliza um serviço da web existente abrindo uma conexão de rede e enviando uma solicitação XML.
Também escreveremos dois solicitantes de serviço da Web: um consumidor baseado na Web (aplicativo ASP.NET) e outro consumidor baseado em aplicativo do Windows.
A seguir, está nosso primeiro exemplo de serviço da web que funciona como um provedor de serviços e expõe dois métodos (adicionar e SayHello) como os serviços da web a serem usados pelos aplicativos. Este é um modelo padrão para um serviço da web. Os serviços da Web .NET usam a extensão .asmx. Observe que um método exposto como um serviço da web tem o atributo WebMethod. Salve este arquivo como FirstService.asmx no diretório virtual do IIS (conforme explicado na configuração do IIS; por exemplo, c: \ MyWebSerces).
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Para testar um serviço da web, ele deve ser publicado. Um serviço da web pode ser publicado em uma intranet ou na Internet. Publicaremos este serviço da web no IIS em execução em uma máquina local. Vamos começar configurando o IIS.
Abra Iniciar → Configurações → Painel de controle → Ferramentas administrativas → Gerenciador de serviços de Internet.
Expanda e clique com o botão direito no site padrão; selecione Novo & # rarr; Diretório virtual. O Assistente de criação de diretório virtual é aberto. Clique em Avançar.
A tela "Alias do diretório virtual" é aberta. Digite o nome do diretório virtual. Por exemplo, MyWebServices. Clique em Avançar.
A tela "Diretório de conteúdo do site" é aberta.
Insira o nome do caminho do diretório para o diretório virtual. Por exemplo, c: \ MyWebServices. Clique em Avançar.
A tela "Permissão de acesso" é aberta. Altere as configurações de acordo com seus requisitos. Vamos manter as configurações padrão para este exercício.
Clique no botão Avançar. Ele completa a configuração do IIS.
Clique em Concluir para completar a configuração.
Para testar se o IIS foi configurado corretamente, copie um arquivo HTML (por exemplo, x.html) no diretório virtual (C: \ MyWebServices) criado acima. Agora, abra o Internet Explorer e digitehttp://localhost/MyWebServices/x.html. Deve abrir o arquivo x.html.
Note- Se não funcionar, tente substituir o host local pelo endereço IP de sua máquina. Se ainda não funcionar, verifique se o IIS está em execução; você pode precisar reconfigurar o IIS e o diretório virtual.
Para testar este serviço da web, copie FirstService.asmx no diretório virtual IIS criado acima (C: \ MyWebServices). Abra o serviço da web no Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Deve abrir sua página de serviço da web. A página deve ter links para dois métodos expostos como serviços da web por nosso aplicativo. Parabéns! Você escreveu seu primeiro serviço da web!
Testando o serviço da Web
Como acabamos de ver, escrever serviços da Web é fácil no .NET Framework. Escrever consumidores de serviços da Web também é fácil na estrutura .NET; no entanto, é um pouco mais complicado. Conforme dito anteriormente, escreveremos dois tipos de consumidores de serviço, um baseado na web e outro baseado em aplicativos do Windows. Vamos escrever nosso primeiro consumidor de serviço da web.
Consumidor de serviço baseado na web
Escreva um consumidor baseado na web conforme mostrado abaixo. Chame-o de WebApp.aspx. Observe que é um aplicativo ASP.NET. Salve-o no diretório virtual do serviço da web (c: \ MyWebServices \ WebApp.axpx).
Este aplicativo possui dois campos de texto que são usados para obter os números do usuário a serem adicionados. Ele tem um botão, Executar, que quando clicado obtém os serviços da web Adicionar e SayHello.
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
Depois que o consumidor é criado, precisamos criar um proxy para o serviço da web a ser consumido. Esse trabalho é feito automaticamente pelo Visual Studio .NET para nós, ao fazer referência a um serviço da web que foi adicionado. Aqui estão as etapas a serem seguidas -
Crie um proxy para o serviço da Web a ser consumido. O proxy é criado usando o utilitário WSDL fornecido com o .NET SDK. Este utilitário extrai informações do serviço da Web e cria um proxy. O proxy é válido apenas para um determinado serviço da web. Se precisar consumir outros serviços da Web, você também precisará criar um proxy para esse serviço. O Visual Studio .NET cria um proxy automaticamente para você quando a referência de serviço da Web é adicionada. Crie um proxy para o serviço da Web usando o utilitário WSDL fornecido com o .NET SDK. Ele criará o arquivo FirstSevice.cs no diretório atual. Precisamos compilá-lo para criar FirstService.dll (proxy) para o serviço da web.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
Coloque o proxy compilado no diretório bin do diretório virtual do serviço da Web (c: \ MyWebServices \ bin). O IIS (Serviços de Informações da Internet) procura o proxy neste diretório.
Crie o consumidor de serviço, da mesma forma que já fizemos. Observe que um objeto do proxy de serviço da Web é instanciado no consumidor. Este proxy se encarrega de interagir com o serviço.
Digite a URL do consumidor no IE para testá-la (por exemplo, http: //localhost/MyWebServices/WebApp.aspx).
Consumidor de serviço da Web baseado em aplicativo do Windows
Escrever um consumidor de serviço da Web baseado em aplicativo do Windows é o mesmo que escrever qualquer outro aplicativo do Windows. Você só precisa criar o proxy (o que já fizemos) e fazer referência a esse proxy ao compilar o aplicativo. A seguir está nosso aplicativo do Windows que usa o serviço da web. Este aplicativo cria um objeto de serviço da web (é claro, proxy) e chama os métodos SayHello e Add nele.
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
Compile-o usando c:\>csc /r:FirstService.dll WinApp.cs
. Ele criará WinApp.exe. Execute-o para testar o aplicativo e o serviço da web.
Agora, surge a pergunta: como você pode ter certeza de que esse aplicativo está realmente chamando o serviço da web?
É simples de testar. Pare o servidor da web para que o serviço da web não possa ser contatado. Agora, execute o aplicativo WinApp. Ele irá disparar uma exceção de tempo de execução. Agora, inicie o servidor da web novamente. Deve funcionar.