web-dev-qa-db-fra.com

Quelle est la différence entre un service Web descendant et un service Web ascendant?

En Java, quelle est la différence entre un service Web descendant et un service Web ascendant? En outre, quelle est la différence entre un service Web SOAP et un service Web REST-ful?

46
Maverick

De haut en bas, vous commencez par un WSDL, puis vous créez tout l'échafaudage nécessaire en Java.

Bottom-up signifie que vous commencez avec une méthode Java et générez le WSDL à partir de celle-ci.

SOAP signifie que l'URL est la même pour toutes les invocations et que seuls les paramètres de la méthode Java diffèrent. REST signifie que l'URL et la méthode HTTP invoquée correspondent à l'opération à effectuer.

Premier contrat contre contrat dernier

Approche ascendante: adopte une définition de haut niveau du problème et le subdivise en sous-problèmes. 

c'est-à-dire Contract-last. Il existe Avantages suivants pour préférer un style de développement de bas en haut.

  • Code premier 
  • Phase initiale très facile à développer. 

Désavantages: 

  • La maintenance est très très difficile.
  • Couplage étroit

Top-Down: Pensez aux fonctionnalités de base et aux composants nécessaires. 

c'est-à-dire contract-first. Il existe les raisons suivantes pour préférer un style de développement descendant.

1. Fragilité Le style de développement du dernier contrat entraîne la génération de votre contrat de service Web (WSDL et votre XSD) à partir de votre contrat Java (généralement une interface). Si vous utilisez cette approche, vous n'aurez aucune garantie que le contrat reste constant dans le temps. Chaque fois que vous modifiez votre code Java et le redéployez, il se peut que le contrat de service Web soit modifié ultérieurement ..__ De plus, toutes les piles SOAP ne génèrent pas le même contrat de service Web à partir d'un contrat Java. Cela signifie que changer votre pile SOAP actuelle pour un autre (pour quelque raison que ce soit) pourrait également changer votre contrat de service Web . Lorsqu'un contrat de service Web est modifié, les utilisateurs du contrat doivent obtenir l'instruction suivante: le nouveau contrat et éventuellement modifier leur code pour tenir compte de toute modification du contrat . Pour qu'un contrat soit utile, il doit rester constant le plus longtemps possible. Si un contrat est modifié, vous devrez contacter tous les utilisateurs de votre service et leur demander d'obtenir la nouvelle version du contrat.

2. Performances Lorsque Java est automatiquement transformé en XML, il n’ya aucun moyen de savoir avec certitude ce qui est envoyé sur le réseau. Un objet peut référencer un autre objet, qui en renvoie un autre, etc. Au final, la moitié des objets du segment de mémoire de votre machine virtuelle peut être convertie en XML, ce qui ralentit les temps de réponse. d’abord, vous décrivez explicitement quel XML est envoyé à quel endroit, vous assurant ainsi que c’est exactement ce que vous voulez.

3. Réutilisation La définition de votre schéma dans un fichier séparé vous permet de le réutiliser dans différents scénarios.

4. Versioning Même si un contrat doit rester constant le plus longtemps possible, il est parfois nécessaire de le modifier. En Java, cela se traduit généralement par une nouvelle interface Java, telle que AirlineService2, et une (nouvelle) implémentation de cette interface. Bien sûr, l'ancien service doit être conservé, car il se peut que certains clients n'aient pas encore migré ... Si vous utilisez d'abord contrat, vous pouvez obtenir un couplage plus lâche entre contrat et implémentation. Un tel couplage plus souple nous permet de mettre en œuvre les deux versions du contrat dans une classe. 

 enter image description here

11
Premraj

@mad_programmer - Vous voulez dire créer des services Web avec une approche ascendante ou descendante . Dans le premier cas, vous commencez à programmer les classes et la logique métier en tant que code Java, puis vous générez le contrat de service Web (à savoir, WSDL). Cette dernière approche signifie le contraire (génération de stubs de classe à partir du WSDL). 

7
Anthony Accioly

Pour appuyer la réponse d’andersen, j’aimerais ajouter un point . Fondamentalement, les gens ont tendance à utiliser une approche ascendante, car dans la plupart des cas, nous aurions déjà commencé le processus d’écriture des beans, de la logique applicative, etc. ensuite, dans la couche de persistance, nous créons les services Web, wsdl, etc., où, comme dans un nouveau projet, où vous construisez quelque chose à partir de zéro, nous pouvons utiliser une approche descendante, où nous écrivons simplement le wsdl et le bâtiment le squelette vous donnerait les beans, les implémentations, les interfaces, etc. Néanmoins, rappelez-vous que l'ordinateur ne peut pas générer la logique que vous souhaitez. Donc, il vous reste à parcourir tout le projet et à combler les lacunes.

5
raja777m

Ajouter à la réponse quand un projet est démarré à partir de zéro l'approche habituelle consiste à créer une interface très basique puis à créer un WSDl à partir de celle-ci. Cela vous évitera d’écrire en WSDl complexe. Ensuite, nous pouvons ajouter directement des opérations spécifiques au projet dans WSDl et une fois que WSDl est finalisé, nous pouvons poursuivre avec une approche descendante.

4
Varun

En haut, vous définissez ce que vous allez faire en premier. c'est-à-dire votre wsdl . Ensuite, vous poursuivez avec le développement actuel . Bien qu'il semble difficile de créer d'abord wsdl, il est recommandé de le faire (Refer Eclipse) , car cela simplifie à long terme votre développement.

C'est exactement l'inverse qui se passe en bas en haut. Nous commençons par la partie code puis, en utilisant les outils intégrés, nous créons wsdl. Cela peut sembler facile au début, mais cela crée beaucoup de confusion lorsque la complexité de votre code s’agrandit. 

0
VDevD