Services Web - Exemples

Sur la base de l'architecture du service Web, nous créons les deux composants suivants dans le cadre de la mise en œuvre des services Web:

Fournisseur de services ou éditeur

Il s'agit du fournisseur du service Web. Le prestataire met en œuvre le service et le met à disposition sur Internet ou intranet.

Nous allons écrire et publier un service Web simple à l'aide du SDK .NET.

Demandeur de service ou consommateur

Il s'agit de n'importe quel consommateur du service Web. Le demandeur utilise un service Web existant en ouvrant une connexion réseau et en envoyant une requête XML.

Nous écrirons également deux demandeurs de services Web: un consommateur Web (application ASP.NET) et un autre consommateur basé sur une application Windows.

Vous trouverez ci-dessous notre premier exemple de service Web qui fonctionne en tant que fournisseur de services et expose deux méthodes (add et SayHello) en tant que services Web à utiliser par les applications. Il s'agit d'un modèle standard pour un service Web. Les services Web .NET utilisent l'extension .asmx. Notez qu'une méthode exposée en tant que service Web a l'attribut WebMethod. Enregistrez ce fichier sous FirstService.asmx dans le répertoire virtuel IIS (comme expliqué dans la configuration d'IIS; par exemple, 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";
   }
}

Pour tester un service Web, il doit être publié. Un service Web peut être publié sur un intranet ou sur Internet. Nous publierons ce service Web sur IIS fonctionnant sur une machine locale. Commençons par configurer IIS.

  • Ouvrez Démarrer → Paramètres → Panneau de configuration → Outils d'administration → Gestionnaire des services Internet.

  • Développez et faites un clic droit sur le site Web par défaut; sélectionnez Nouveau & # rarr; Répertoire virtuel. L'assistant de création de répertoire virtuel s'ouvre. Cliquez sur Suivant.

  • L'écran "Virtual Directory Alias" s'ouvre. Tapez le nom du répertoire virtuel. Par exemple, MyWebServices. Cliquez sur Suivant.

  • L'écran "Répertoire de contenu du site Web" s'ouvre.

  • Entrez le nom du chemin du répertoire virtuel. Par exemple, c: \ MyWebServices. Cliquez sur Suivant.

  • L'écran "Autorisation d'accès" s'ouvre. Modifiez les paramètres selon vos besoins. Gardons les paramètres par défaut pour cet exercice.

  • Cliquez sur le bouton Suivant. Il termine la configuration IIS.

  • Cliquez sur Terminer pour terminer la configuration.

Pour tester si IIS a été configuré correctement, copiez un fichier HTML (par exemple, x.html) dans le répertoire virtuel (C: \ MyWebServices) créé ci-dessus. Maintenant, ouvrez Internet Explorer et tapezhttp://localhost/MyWebServices/x.html. Il devrait ouvrir le fichier x.html.

Note- Si cela ne fonctionne pas, essayez de remplacer l'hôte local par l'adresse IP de votre machine. Si cela ne fonctionne toujours pas, vérifiez si IIS est en cours d'exécution; vous devrez peut-être reconfigurer IIS et le répertoire virtuel.

Pour tester ce service Web, copiez FirstService.asmx dans le répertoire virtuel IIS créé ci-dessus (C: \ MyWebServices). Ouvrez le service Web dans Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Il devrait ouvrir la page de votre service Web. La page doit contenir des liens vers deux méthodes exposées en tant que services Web par notre application. Toutes nos félicitations! Vous avez écrit votre premier service Web!

Test du service Web

Comme nous venons de le voir, l'écriture de services Web est facile dans le .NET Framework. L'écriture de consommateurs de services Web est également facile dans le framework .NET; cependant, c'est un peu plus compliqué. Comme indiqué précédemment, nous écrirons deux types de consommateurs de services, l'un basé sur le Web et l'autre basé sur l'application Windows. Écrivons notre premier consommateur de services Web.

Consommateur de services Web

Écrivez un consommateur basé sur le Web comme indiqué ci-dessous. Appelez-le WebApp.aspx. Notez qu'il s'agit d'une application ASP.NET. Enregistrez-le dans le répertoire virtuel du service Web (c: \ MyWebServices \ WebApp.axpx).

Cette application a deux champs de texte qui sont utilisés pour obtenir des nombres de l'utilisateur à ajouter. Il a un bouton, Exécuter, qui, lorsqu'il est cliqué, obtient les services Web Add et 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>

Une fois le consommateur créé, nous devons créer un proxy pour le service Web à consommer. Ce travail est effectué automatiquement par Visual Studio .NET pour nous lors du référencement d'un service Web qui a été ajouté. Voici les étapes à suivre -

  • Créez un proxy pour le service Web à utiliser. Le proxy est créé à l'aide de l'utilitaire WSDL fourni avec le SDK .NET. Cet utilitaire extrait les informations du service Web et crée un proxy. Le proxy n'est valide que pour un service Web particulier. Si vous devez utiliser d'autres services Web, vous devez également créer un proxy pour ce service. Visual Studio .NET crée automatiquement un proxy pour vous lorsque la référence de service Web est ajoutée. Créez un proxy pour le service Web à l'aide de l'utilitaire WSDL fourni avec le SDK .NET. Il créera le fichier FirstSevice.cs dans le répertoire courant. Nous devons le compiler pour créer FirstService.dll (proxy) pour le service Web.

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • Placez le proxy compilé dans le répertoire bin du répertoire virtuel du Web Service (c: \ MyWebServices \ bin). Internet Information Services (IIS) recherche le proxy dans ce répertoire.

  • Créez le consommateur de service, de la même manière que nous l'avons déjà fait. Notez qu'un objet du proxy de service Web est instancié dans le consommateur. Ce proxy s'occupe de l'interaction avec le service.

  • Tapez l'URL du consommateur dans IE pour le tester (par exemple, http: //localhost/MyWebServices/WebApp.aspx).

Consommateur de services Web Windows

L'écriture d'un consommateur de service Web basé sur une application Windows est identique à l'écriture de toute autre application Windows. Il vous suffit de créer le proxy (ce que nous avons déjà fait) et de référencer ce proxy lors de la compilation de l'application. Voici notre application Windows qui utilise le service Web. Cette application crée un objet de service Web (bien sûr, un proxy) et appelle les méthodes SayHello et Add dessus.

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

Compilez-le en utilisant c:\>csc /r:FirstService.dll WinApp.cs. Cela créera WinApp.exe. Exécutez-le pour tester l'application et le service Web.

Maintenant, la question se pose: comment pouvez-vous être sûr que cette application appelle réellement le service Web?

C'est simple à tester. Arrêtez votre serveur Web afin que le service Web ne puisse pas être contacté. Maintenant, exécutez l'application WinApp. Il déclenchera une exception d'exécution. Maintenant, redémarrez le serveur Web. Ça devrait marcher.