JSON, REST, SOAP, WSDL et SOA: comment se lient-ils tous

155

Je fais actuellement quelques examens et j'ai du mal à comprendre certains concepts. Celles-ci ont toutes été «mentionnées» dans mes notes, mais je ne comprenais pas vraiment comment elles étaient toutes liées. Autant que je sache:

SOA - une solution pour faire communiquer les consommateurs / fournisseurs de services. (pour autant que je sache, c'est le terme générique pour tout le reste)

WSDL - Un langage qui décrit le service du fournisseur.

SOAP - Un «wrapper» de protocole XML utilisé par les services pour envoyer des messages. Fonctionne en conjonction avec WSDL pour fournir des paramètres?

REST - Un modèle de conception qui est similaire à SOAP en fonction mais évite le XML? (vraiment pas sûr de celui-ci)

JSON - Une alternative à XML qui utilise javascript? (pas sûr de celui-ci non plus)

En regardant autour d'Internet, il ne semble pas y avoir de définition claire de ce que sont tous ces éléments et de la manière dont ils sont liés.

Geai
la source

Réponses:

252

Imaginez que vous développez une application Web et que vous décidez de découpler la fonctionnalité de la présentation de l'application, car elle offre une plus grande liberté.

Vous créez une API et laissez les autres implémenter leurs propres frontaux dessus. Ce que vous venez de faire ici est de mettre en œuvre une méthodologie SOA , c'est-à-dire en utilisant des services Web.

Les services Web rendent les blocs fonctionnels accessibles via des protocoles Internet standard indépendamment des plates-formes et des langages de programmation.

Ainsi, vous concevez un mécanisme d'échange entre le back-end (web-service) qui fait le traitement et la génération de quelque chose d'utile, et le front-end (qui consomme les données), qui pourrait être n'importe quoi. (Une application Web, mobile ou de bureau, ou un autre service Web). La seule limitation ici est que le front-end et le back-end doivent "parler" le même "langage".


C'est là qu'interviennent SOAP et REST. Ce sont des moyens standard que vous choisirez pour communiquer avec le service Web.

SAVON:

SOAP utilise en interne XML pour envoyer des données dans les deux sens. Les messages SOAP ont une structure rigide et le XML de réponse doit alors être analysé. WSDL est une spécification des requêtes qui peuvent être faites, avec quels paramètres et ce qu'elles renverront. C'est une spécification complète de votre API.

DU REPOS:

REST est un concept de design.

Le World Wide Web représente la plus grande implémentation d'un système conforme au style architectural REST.

Ce n'est pas aussi rigide que SOAP. Les services Web RESTful utilisent des URI et des méthodes standard pour appeler le service Web. Lorsque vous demandez un URI, il retourne la représentation d'un objet, sur lequel vous pouvez ensuite effectuer des opérations (par exemple GET, PUT, POST, DELETE). Vous n'êtes pas limité à choisir du XML pour représenter des données, vous pouvez vraiment choisir n'importe quoi (JSON inclus)

L'API REST de Flickr va plus loin et vous permet également de renvoyer des images.


JSON et XML sont des choix fonctionnellement équivalents et courants. Il existe également des frameworks basés sur RPC comme GRPC basé sur Protobufs et Apache Thrift qui peuvent être utilisés pour la communication entre les producteurs et les consommateurs d'API. Le format le plus couramment utilisé par les API Web est JSON car il est facile à utiliser et à analyser dans toutes les langues.

Anirudh Ramanathan
la source
36
Excellente réponse jusqu'à la dérobade sur JSON vs XML. Une version plus équilibrée serait: XML et JSON sont des moyens de sérialiser les données. XML est plus flexible et a beaucoup de normes conçues autour de lui, mais certains estiment qu'il est trop complexe et verbeux. JSON est un format plus simple qui définit quelques structures de base de manière concise, ce qui est facile à utiliser pour les structures de données informelles; certaines personnes travaillent sur des normes supplémentaires pour reproduire celles qui existent au-dessus de XML.
IMSoP
30

WSDL : signifie langage de description de service Web

Dans SOAP (Simple Object Access Protocol), lorsque vous utilisez un service Web et ajoutez un service Web à votre projet, vos applications clientes ne connaissent pas les fonctions du service Web. De nos jours, c'est en quelque sorte démodé et pour chaque type de client différent, vous devez implémenter différents WSDLfichiers. Par exemple, vous ne pouvez pas utiliser le même fichier pour .Netet phpclient. Le WSDLfichier contient quelques descriptions sur les fonctions du service Web. Le type de ce fichier est XML. SOAPest une alternative pour REST.

REST : signifie transfert d'état de représentation

C'est un autre type de service API, il est vraiment facile à utiliser pour les clients. Ils n'ont pas besoin d'avoir une extension de fichier spéciale comme les WSDLfichiers. L'opération CRUD peut être implémentée par différents HTTP Verbs(GET pour la lecture, POST pour la création, PUT ou PATCH pour la mise à jour et DELETE pour la suppression du document souhaité), elles sont basées sur le HTTPprotocole et la plupart du temps la réponse est au format JSONou au XMLformat. D'autre part, l'application cliente doit appeler exactement les HTTP Verbnoms et types de paramètres associés . En raison de l'absence de fichier spécial pour la définition, par exemple WSDL, il s'agit d'un travail manuel utilisant le point de terminaison. Mais ce n'est pas un gros problème car nous avons maintenant beaucoup de plugins pour différents IDE pour générer l'implémentation côté client.

SOA : Stands for Service Oriented Architecture

Comprend toute la programmation avec les concepts et l'architecture des services Web. Imaginez que vous souhaitiez implémenter une application à grande échelle. Une pratique peut être d'avoir différents services, appelés micro-services et l'ensemble du mécanisme d'application appellerait le service Web nécessaire au bon moment. Les deux RESTet SOAPles services Web sont en quelque sorte SOA.

JSON : signifiejavascript Object Notation

lorsque vous sérialisez un objet pour javascript, le type de format d'objet est JSON. imaginez que vous avez la classe humaine:

class Human{
 string Name;
 string Family;
 int Age;
}

et vous avez quelques instances de cette classe:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

lorsque vous sérialisez l'objet h1 en JSON, le résultat est:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptpeut évaluer ce format par eval()fonction et créer un tableau associatif à partir de cette JSONchaîne. Celui-ci est un concept différent par rapport aux autres concepts que j'ai décrits précédemment.

Saman Gholami
la source
Cette réponse contient quelques erreurs (par exemple HTML <> HTTP)
Yassin Hajaj
1
@YassinHajaj corrigé
Saman Gholami