Tutoriel sur les services Web SOAP: Qu'est-ce que le protocole SOAP? EXEMPLE

Table des matières:

Anonim

Qu'est-ce que SOAP?

SOAP est un protocole basé sur XML pour accéder aux services Web via HTTP. Il a des spécifications qui peuvent être utilisées dans toutes les applications.

SOAP est connu sous le nom de Simple Object Access Protocol, mais a été raccourci par la suite en SOAP v1.2. SOAP est un protocole ou, en d'autres termes, une définition de la manière dont les services Web se parlent entre eux ou avec les applications clientes qui les invoquent.

SOAP a été développé en tant que langage intermédiaire afin que les applications construites sur différents langages de programmation puissent se parler facilement et éviter l'effort de développement extrême.

Dans ce didacticiel sur les services Web SOAP, vous apprendrez:

  • Introduction à SOAP
  • Avantages de SOAP
  • Blocs de construction SOAP
  • Structure des messages SOAP
  • Élément d'enveloppe SOAP
  • Modèle de communication SOAP
  • Exemple pratique de SOAP

Introduction à SOAP

Dans le monde d'aujourd'hui, il existe un grand nombre d'applications basées sur différents langages de programmation. Par exemple, il pourrait y avoir une application Web conçue en Java, une autre en .Net et une autre en PHP.

L'échange de données entre les applications est crucial dans le monde en réseau d'aujourd'hui. Mais l'échange de données entre ces applications hétérogènes serait complexe. Il en sera de même de la complexité du code pour réaliser cet échange de données.

L'une des méthodes utilisées pour lutter contre cette complexité consiste à utiliser XML (Extensible Markup Language) comme langage intermédiaire pour l'échange de données entre applications.

Chaque langage de programmation peut comprendre le langage de balisage XML. Par conséquent, XML a été utilisé comme support sous-jacent pour l'échange de données.

Mais il n'y a pas de spécifications standard sur l'utilisation de XML dans tous les langages de programmation pour l'échange de données. C'est là qu'intervient le logiciel SOAP.

SOAP a été conçu pour fonctionner avec XML sur HTTP et avoir une sorte de spécification qui pourrait être utilisée dans toutes les applications. Nous examinerons plus en détail le protocole SOAP dans les chapitres suivants.

Avantages de SOAP

SOAP est le protocole utilisé pour l'échange de données entre les applications. Voici quelques-unes des raisons pour lesquelles SOAP est utilisé.

  • Lors du développement de services Web basés sur SOAP, vous devez disposer d'un langage pouvant être utilisé pour que les services Web puissent communiquer avec les applications clientes. SOAP est le médium parfait qui a été développé pour atteindre cet objectif. Ce protocole est également recommandé par le consortium W3C qui est l'organe directeur de toutes les normes Web.
  • SOAP est un protocole léger utilisé pour l'échange de données entre les applications. Notez le mot-clé « lumière ». Puisque la programmation SOAP est basée sur le langage XML, qui est lui-même un langage d'échange de données léger, donc SOAP en tant que protocole qui tombe également dans la même catégorie.
  • SOAP est conçu pour être indépendant de la plate-forme et est également conçu pour être indépendant du système d'exploitation. Ainsi, le protocole SOAP peut fonctionner avec n'importe quelle application basée sur un langage de programmation sur les plates-formes Windows et Linux.
  • Il fonctionne sur le protocole HTTP -SOAP fonctionne sur le protocole HTTP, qui est le protocole par défaut utilisé par toutes les applications Web. Par conséquent, aucune sorte de personnalisation n'est requise pour exécuter les services Web basés sur le protocole SOAP pour fonctionner sur le World Wide Web.

Blocs de construction SOAP

La spécification SOAP définit quelque chose appelé " message SOAP " qui est ce qui est envoyé au service Web et à l'application cliente.

Le diagramme ci-dessous de l'architecture SOAP montre les différents éléments constitutifs d'un message SOAP.

Blocs de construction de messages SOAP

Le message SOAP n'est rien d'autre qu'un simple document XML contenant les composants ci-dessous.

  • Un élément Envelope qui identifie le document XML en tant que message SOAP - Il s'agit de la partie contenant du message SOAP et est utilisé pour encapsuler tous les détails dans le message SOAP. Il s'agit de l'élément racine du message SOAP.
  • Un élément d'en-tête qui contient des informations d'en-tête - L'élément d'en-tête peut contenir des informations telles que des informations d'authentification qui peuvent être utilisées par l'application appelante. Il peut également contenir la définition de types complexes qui pourraient être utilisés dans le message SOAP. Par défaut, le message SOAP peut contenir des paramètres qui peuvent être de types simples tels que des chaînes et des nombres, mais peuvent également être un type d'objet complexe.

Un exemple de service SOAP simple de type complexe est présenté ci-dessous.

Supposons que nous voulions envoyer un type de données structuré qui avait une combinaison d'un "Nom du Tutoriel" et d'une "Description du Tutoriel", alors nous définirions le type complexe comme indiqué ci-dessous.

Le type complexe est défini par la balise d'élément . Tous les éléments requis de la structure ainsi que leurs types de données respectifs sont ensuite définis dans la collection de types complexes.

  • Un élément Body qui contient des informations d'appel et de réponse - Cet élément contient les données réelles qui doivent être envoyées entre le service Web et l'application appelante. Vous trouverez ci-dessous un exemple de service Web SOAP du corps SOAP qui fonctionne réellement sur le type complexe défini dans la section d'en-tête. Voici la réponse du nom du didacticiel et de la description du didacticiel qui sont envoyés à l'application appelante qui appelle ce service Web.
Web ServicesAll about web services

Structure des messages SOAP

Une chose à noter est que les messages SOAP sont normalement générés automatiquement par le service Web lorsqu'il est appelé.

Chaque fois qu'une application cliente appelle une méthode dans le service Web, le service Web génère automatiquement un message SOAP qui contient les détails nécessaires sur les données qui seront envoyées du service Web à l'application cliente.

Comme indiqué dans la rubrique précédente de ce didacticiel SOAP, un simple message SOAP contient les éléments suivants:

  • L'élément Enveloppe
  • L'élément d'en-tête et
  • L'élément corps
  • L'élément Fault (facultatif)

Regardons un exemple ci-dessous d'un simple message SOAP et voyons ce que fait réellement l'élément.

Structure des messages SOAP
  1. Comme le montre le message SOAP ci-dessus, la première partie du message SOAP est l'élément enveloppe qui est utilisé pour encapsuler le message SOAP entier.
  2. L'élément suivant est le corps SOAP qui contient les détails du message réel.
  3. Notre message contient un service Web qui porte le nom de "Guru99WebService".
  4. Le "Guru99Webservice" accepte un paramètre du type 'int' et porte le nom de TutorialID.

À présent, le message SOAP ci-dessus sera transmis entre le service Web et l'application cliente.

Vous pouvez voir à quel point les informations ci-dessus sont utiles pour l'application cliente. Le message SOAP indique à l'application cliente quel est le nom du service Web, ainsi que les paramètres attendus ainsi que le type de chaque paramètre pris par le service Web.

Élément d'enveloppe SOAP

Le premier élément du bloc de construction est l'enveloppe SOAP.

L'enveloppe SOAP est utilisée pour encapsuler tous les détails nécessaires des messages SOAP, qui sont échangés entre le service Web et l'application cliente.

L'élément enveloppe SOAP est utilisé pour indiquer le début et la fin d'un message SOAP. Cela permet à l'application cliente qui appelle le service Web de savoir quand le message SOAP se termine.

Les points suivants peuvent être notés sur l'élément enveloppe SOAP.

  • Chaque message SOAP doit avoir un élément Enveloppe racine. Il est absolument obligatoire pour le message SOAP d'avoir un élément d'enveloppe.
  • Chaque élément d'enveloppe doit avoir au moins un élément de corps de savon.
  • Si un élément Envelope contient un élément d'en-tête, il ne doit pas en contenir plus d'un et il doit apparaître comme le premier enfant de Envelope, avant l'élément body.
  • L'enveloppe change lorsque les versions SOAP changent.
  • Un processeur SOAP compatible v1.1 génère une erreur lors de la réception d'un message contenant l'espace de noms de l'enveloppe v1.2.
  • Un processeur SOAP compatible v1.2 génère une erreur de non-concordance de version s'il reçoit un message qui n'inclut pas l'espace de noms d'enveloppe v1.2.

Vous trouverez ci-dessous un exemple d'API SOAP de la version 1.2 de l'élément d'enveloppe SOAP.

int

Le message d'erreur

Lorsqu'une demande est adressée à un service Web SOAP, la réponse renvoyée peut être de 2 formes qui sont une réponse réussie ou une réponse d'erreur. Lorsqu'un succès est généré, la réponse du serveur sera toujours un message SOAP. Mais si des erreurs SOAP sont générées, elles sont renvoyées sous la forme d'erreurs "HTTP 500".

Le message SOAP Fault se compose des éléments suivants.

  1. - C'est le code qui désigne le code de l'erreur. Le code d'erreur peut être l'une des valeurs ci-dessous
    1. SOAP-ENV: VersionMismatch - C'est quand un espace de noms non valide pour l'élément SOAP Envelope est rencontré.
    2. SOAP-ENV: MustUnderstand - Un élément enfant immédiat de l'élément Header, avec l'attribut mustUnderstand défini sur "1", n'a pas été compris.
    3. SOAP-ENV: Client - Le message était mal formé ou contenait des informations incorrectes.
    4. SOAP-ENV: Server - Il y avait un problème avec le serveur, donc le message n'a pas pu continuer.
  2. - Ceci est le message texte qui donne une description détaillée de l'erreur.
  3. (facultatif) - Il s'agit d'une chaîne de texte qui indique qui a causé l'erreur.
  4. (facultatif) - Il s'agit de l'élément pour les messages d'erreur spécifiques à l'application. Ainsi, l'application peut avoir un message d'erreur spécifique pour différents scénarios de logique métier.

Exemple de message d'erreur

Un exemple de message d'erreur est donné ci-dessous. L'erreur est générée si le scénario dans lequel le client tente d'utiliser une méthode appelée TutorialID dans la classe GetTutorial.

Le message d'erreur ci-dessous est généré dans le cas où la méthode n'existe pas dans la classe définie.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Production:

Lorsque vous exécutez le code ci-dessus, il affichera l'erreur comme "Impossible de localiser la méthode (GetTutorialID) dans la classe (GetTutorial)"

Modèle de communication SOAP

Toutes les communications par SOAP se font via le protocole HTTP. Avant SOAP, de nombreux services Web utilisaient le style standard RPC (Remote Procedure Call) pour la communication. C'était le type de communication le plus simple, mais il présentait de nombreuses limites.

Maintenant, dans ce didacticiel sur l'API SOAP, examinons le diagramme ci-dessous pour voir comment cette communication fonctionne. Dans cet exemple, supposons que le serveur héberge un service Web qui a fourni 2 méthodes comme

  • GetEmployee - Cela obtiendrait tous les détails de l'employé
  • SetEmployee - Cela définirait la valeur des détails tels que le service des employés, le salaire, etc. en conséquence.

Dans la communication de style RPC normale, le client appellerait simplement les méthodes dans sa demande et enverrait les paramètres requis au serveur, et le serveur enverrait alors la réponse souhaitée.

Le modèle de communication ci-dessus présente les graves limites ci-dessous

  1. Non indépendant du langage - Le serveur hébergeant les méthodes serait dans un langage de programmation particulier et normalement les appels au serveur se feraient uniquement dans ce langage de programmation.
  2. Pas le protocole standard - Lorsqu'un appel est effectué vers la procédure distante, l'appel n'est pas effectué via le protocole standard. C'était un problème car la plupart des communications sur le Web devaient être effectuées via le protocole HTTP.
  3. Pare - feu - Étant donné que les appels RPC ne passent pas par le protocole normal, des ports séparés doivent être ouverts sur le serveur pour permettre au client de communiquer avec le serveur. Normalement, tous les pare-feu bloqueraient ce type de trafic, et beaucoup de configuration était généralement nécessaire pour garantir que ce type de communication entre le client et le serveur fonctionnerait.

Pour surmonter toutes les limitations citées ci-dessus, SOAP utiliserait alors le modèle de communication ci-dessous

  1. Le client formaterait les informations concernant l'appel de procédure et tous les arguments dans un message SOAP et les enverrait au serveur dans le cadre d'une requête HTTP. Ce processus d'encapsulation des données dans un message SOAP était connu sous le nom de Marshalling.
  2. Le serveur déballait alors le message envoyé par le client, verrait ce que le client demandait, puis renverrait la réponse appropriée au client sous forme de message SOAP. La pratique de déballer une demande envoyée par le client est connue sous le nom de Demarshalling.

Exemple pratique de SOAP

Maintenant, dans ce tutoriel SoapUI, voyons un exemple SOAP pratique,

L'un des meilleurs moyens de voir comment les messages SOAP sont générés est probablement de voir un service Web en action.

Cette rubrique examinera l'utilisation de l'infrastructure Microsoft.Net pour créer un service Web ASMX. Ce type de service Web prend en charge SOAP version 1.1 et version 1.2.

Les services Web ASMX génèrent automatiquement le document WSDL (Web Service Definition Language). Ce document WSDL est requis par l'application cliente appelante afin que l'application sache ce que le service Web est capable de faire.

Dans notre exemple, nous allons créer un service web simple, qui sera utilisé pour renvoyer une chaîne à l'application qui appelle le service web.

Ce service Web sera hébergé dans une application Web Asp.Net. Nous invoquerons ensuite le service Web et verrons le résultat renvoyé par le service Web.

Visual Studio nous montrera également le message SOAP transmis entre le service Web et l'application appelante.

Le premier pré-requis pour configurer notre application de service Web qui peut être fait en suivant les étapes ci-dessous.

Veuillez vous assurer que Visual Studio 2013 est installé sur votre système pour cet exemple.

Étape 1) La première étape consiste à créer une application Web ASP.Net vide. À partir de Visual Studio 2013, cliquez sur l'option de menu Fichier-> Nouveau projet.

Une fois que vous avez cliqué sur l'option Nouveau projet, Visual Studio vous donnera alors une autre boîte de dialogue pour choisir le type de projet et pour donner les détails nécessaires du projet. Ceci est expliqué à l'étape suivante.

Étape 2) Dans cette étape,

  1. Assurez-vous de choisir d'abord le modèle Web C # de l'application Web ASP.NET. Le projet doit être de ce type pour créer un projet de services SOAP. En choisissant cette option, Visual Studio effectuera ensuite les étapes nécessaires pour ajouter les fichiers requis requis par toute application Web.
  2. Donnez un nom à votre projet qui, dans notre cas, a été donné comme webservice.asmx. Assurez-vous ensuite de donner un emplacement où les fichiers du projet seront stockés.

Une fois terminé, vous verrez le fichier de projet créé dans votre explorateur de solutions dans Visual Studio 2013.

Étape 3) Dans cette étape,

Nous allons ajouter un fichier de service Web à notre projet

  1. Cliquez d'abord avec le bouton droit sur le fichier de projet comme indiqué ci-dessous

  1. Une fois que vous faites un clic droit sur le fichier de projet, vous avez la possibilité de choisir l'option "Ajouter-> Service Web (ASMX) pour ajouter un fichier de service Web. Il vous suffit de fournir un nom de service de didacticiel pour le fichier de nom de service Web.

Étape 4) Ajoutez le code suivant à votre fichier asmx Tutorial Service.

Explication du code:

  1. Cette ligne de code fournit un nom à votre fichier de service Web. Il s'agit d'une étape importante car elle laisse la place à l'application cliente d'appeler le service Web via le nom du service Web.
  2. Normalement, un fichier de classe est utilisé pour encapsuler la fonctionnalité d'un service Web. Ainsi, le fichier de classe aura la définition de toutes les méthodes Web qui fourniront des fonctionnalités à l'application cliente.
  3. Ici, [WebMethod] est connu comme un attribut qui décrit une fonction. L'étape suivante crée une fonction appelée "Guru99WebService", mais avec l'inclusion de cette étape d'ajout d'un attribut [WebMethod] garantit que cette méthode peut être appelée par une application cliente. Si cet attribut n'est pas en place, la méthode ne peut jamais être appelée par une application cliente.
  4. Ici, nous définissons une fonction appelée 'Guru99WebService' qui sera utilisée pour renvoyer une chaîne à l'application cliente appelante. Cette fonction est un service Web qui peut être appelé par n'importe quelle application cliente.
  5. Nous utilisons l'instruction return pour renvoyer la chaîne "Ceci est un service Web Guru99" à l'application cliente.

Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.

Production:

  • Le résultat montre clairement que le nom de notre service Web est "Guru99 Web Service", qui résulte de l'attribution d'un nom à notre service Web.
  • Nous pouvons également voir que nous pouvons appeler le service Web. Si nous cliquons sur le bouton Appeler, nous obtiendrons la réponse ci-dessous dans le navigateur Web.

La sortie ci-dessus,

  • Cela montre clairement qu'en invoquant la méthode Web, la chaîne "Ceci est un service Web Guru99" est renvoyée.
  • Visual Studio vous permet également d'afficher la demande et la réponse de message SOAP qui sont générées lorsque le service Web ci-dessus est appelé.

La requête SOAP qui est générée lorsque le service Web est appelé est indiquée ci-dessous.

Explication du code:

  1. La première partie du message SOAP est l'élément enveloppe qui est ce qui a été discuté dans les chapitres précédents. C'est l'élément d'encapsulation qui est présent dans chaque message SOAP.
  2. Le corps SOAP est l'élément suivant et contient les détails réels du message SOAP.
  3. La troisième partie est l'élément qui spécifie que nous voulons appeler le service qui s'appelle «Guru99WebService».

string

Explication du code:

  1. La première partie du message SOAP est l'élément enveloppe qui est ce qui a été discuté dans les chapitres précédents. C'est l'élément d'encapsulation qui est présent dans chaque message SOAP.
  2. Le corps SOAP est l'élément suivant et contient les détails réels du message SOAP.
  3. La partie intéressante que vous verrez maintenant est l'attribut 'string'. Cela indique à l'application cliente que le service Web appelé renvoie un objet de type chaîne. Ceci est très utile car si l'application cliente ne saurait autrement ce que retourne le service Web.

Résumé

  • SOAP est un protocole utilisé pour échanger des données entre des applications basées sur différents langages de programmation.
  • SOAP est construit sur la spécification XML et fonctionne avec le protocole HTTP. Cela en fait un outil parfait pour une utilisation dans les applications Web.
  • Les blocs de construction SOAP sont constitués d'un message SOAP. Chaque message SOAP se compose d'un élément d'enveloppe, d'un en-tête et d'un élément de corps.
  • L'élément enveloppe est l'élément obligatoire dans le message SOAP et est utilisé pour encapsuler toutes les données dans le message SOAP.
  • L'élément d'en-tête peut être utilisé pour contenir des informations telles que des informations d'authentification ou la définition de types de données complexes.
  • L'élément body est l'élément principal qui contient la définition des méthodes Web ainsi que toute information de paramètre si nécessaire.