Servizi Web - Esempi

Sulla base dell'architettura del servizio web, creiamo i seguenti due componenti come parte dell'implementazione dei servizi web:

Fornitore di servizi o editore

Questo è il fornitore del servizio web. Il fornitore di servizi implementa il servizio e lo rende disponibile su Internet o intranet.

Scriveremo e pubblicheremo un semplice servizio web utilizzando .NET SDK.

Richiedente o consumatore del servizio

Questo è qualsiasi consumatore del servizio web. Il richiedente utilizza un servizio Web esistente aprendo una connessione di rete e inviando una richiesta XML.

Scriveremo anche due richiedenti di servizi Web: un consumer basato sul Web (applicazione ASP.NET) e un altro consumer basato su applicazioni Windows.

Di seguito è riportato il nostro primo esempio di servizio Web che funziona come fornitore di servizi ed espone due metodi (add e SayHello) come servizi Web da utilizzare dalle applicazioni. Questo è un modello standard per un servizio web. I servizi Web .NET utilizzano l'estensione .asmx. Si noti che un metodo esposto come servizio Web ha l'attributo WebMethod. Salvare questo file come FirstService.asmx nella directory virtuale di IIS (come spiegato nella configurazione di IIS; ad esempio, 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";
   }
}

Per testare un servizio web, deve essere pubblicato. Un servizio Web può essere pubblicato su una intranet o su Internet. Pubblicheremo questo servizio web su IIS in esecuzione su una macchina locale. Cominciamo con la configurazione di IIS.

  • Apri Start → Impostazioni → Pannello di controllo → Strumenti di amministrazione → Gestione servizi Internet.

  • Espandere e fare clic con il pulsante destro del mouse sul sito Web predefinito; seleziona Nuovo & # rarr; Directory virtuale. Si apre la Creazione guidata directory virtuale. Fare clic su Avanti.

  • Viene visualizzata la schermata "Alias ​​directory virtuale". Digita il nome della directory virtuale. Ad esempio, MyWebServices. Fare clic su Avanti.

  • Viene visualizzata la schermata "Directory del contenuto del sito Web".

  • Immettere il nome del percorso della directory per la directory virtuale. Ad esempio, c: \ MyWebServices. Fare clic su Avanti.

  • Si apre la schermata "Autorizzazione di accesso". Modificare le impostazioni in base alle proprie esigenze. Manteniamo le impostazioni predefinite per questo esercizio.

  • Fare clic sul pulsante Avanti. Completa la configurazione IIS.

  • Fare clic su Fine per completare la configurazione.

Per verificare se IIS è stato configurato correttamente, copiare un file HTML (ad esempio, x.html) nella directory virtuale (C: \ MyWebServices) creata sopra. Ora apri Internet Explorer e digitahttp://localhost/MyWebServices/x.html. Dovrebbe aprire il file x.html.

Note- Se non funziona, prova a sostituire localhost con l'indirizzo IP della tua macchina. Se ancora non funziona, controlla se IIS è in esecuzione; potrebbe essere necessario riconfigurare IIS e la directory virtuale.

Per testare questo servizio web, copia FirstService.asmx nella directory virtuale IIS creata sopra (C: \ MyWebServices). Apri il servizio web in Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Dovrebbe aprire la pagina del servizio web. La pagina dovrebbe contenere collegamenti a due metodi esposti come servizi Web dalla nostra applicazione. Congratulazioni! Hai scritto il tuo primo servizio web!

Testare il servizio Web

Come abbiamo appena visto, scrivere servizi web è facile in .NET Framework. Anche la scrittura di utenti di servizi Web è facile nel framework .NET; tuttavia, è un po 'più complicato. Come detto in precedenza, scriveremo due tipi di consumatori di servizi, uno basato sul Web e un altro basato su applicazioni Windows. Scriviamo il nostro primo consumatore di servizi web.

Consumatore di servizi basati sul web

Scrivi un consumatore basato sul web come indicato di seguito. Chiamalo WebApp.aspx. Notare che è un'applicazione ASP.NET. Salvarlo nella directory virtuale del servizio web (c: \ MyWebServices \ WebApp.axpx).

Questa applicazione ha due campi di testo che vengono utilizzati per ottenere numeri dall'utente da aggiungere. Ha un pulsante, Esegui, che quando cliccato ottiene i servizi web Aggiungi 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>

Dopo aver creato il consumatore, dobbiamo creare un proxy per l'utilizzo del servizio web. Questo lavoro viene eseguito automaticamente da Visual Studio .NET per noi quando si fa riferimento a un servizio Web che è stato aggiunto. Ecco i passaggi da seguire:

  • Creare un proxy per il servizio Web da utilizzare. Il proxy viene creato utilizzando l'utilità WSDL fornita con .NET SDK. Questa utilità estrae le informazioni dal servizio Web e crea un proxy. Il proxy è valido solo per un particolare servizio Web. Se è necessario utilizzare altri servizi Web, è necessario creare anche un proxy per questo servizio. Visual Studio .NET crea automaticamente un proxy quando viene aggiunto il riferimento al servizio Web. Creare un proxy per il servizio Web utilizzando l'utilità WSDL fornita con .NET SDK. Creerà il file FirstSevice.cs nella directory corrente. Dobbiamo compilarlo per creare FirstService.dll (proxy) per il servizio Web.

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • Metti il ​​proxy compilato nella directory bin della directory virtuale del Web Service (c: \ MyWebServices \ bin). Internet Information Services (IIS) cerca il proxy in questa directory.

  • Creare il consumatore del servizio, nello stesso modo in cui abbiamo già fatto. Si noti che nel consumer viene creata un'istanza di un oggetto del proxy del servizio Web. Questo proxy si occupa di interagire con il servizio.

  • Digita l'URL del consumatore in IE per testarlo (ad esempio, http: //localhost/MyWebServices/WebApp.aspx).

Consumer di servizi Web basati su applicazioni Windows

Scrivere un consumatore di servizi Web basato su applicazioni Windows equivale a scrivere qualsiasi altra applicazione Windows. Hai solo bisogno di creare il proxy (cosa che abbiamo già fatto) e fare riferimento a questo proxy durante la compilazione dell'applicazione. Di seguito è la nostra applicazione Windows che utilizza il servizio web. Questa applicazione crea un oggetto servizio web (ovviamente, proxy) e chiama i metodi SayHello e Add su di esso.

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());
      }
   }
}

Compilalo usando c:\>csc /r:FirstService.dll WinApp.cs. Creerà WinApp.exe. Eseguilo per testare l'applicazione e il servizio web.

Ora sorge la domanda: come si può essere sicuri che questa applicazione stia effettivamente chiamando il servizio web?

È semplice da testare. Arresta il tuo server web in modo che il servizio web non possa essere contattato. Ora, esegui l'applicazione WinApp. Attiverà un'eccezione di runtime. Ora riavvia il server web. Dovrebbe funzionare.