2008-08-14 4 views
16

J'ai utilisé Apache CXF pour exposer une dizaine de classes Java en tant que services Web.Quelle est la différence entre un point de terminaison, un service et un port lorsque vous travaillez avec des services Web?

J'ai généré des clients en utilisant CXF, Axis et .NET.

Dans Axis et CXF, un "Service" ou un "Locator" est généré. De ce service, vous pouvez obtenir un "Port". Le "Port" est utilisé pour effectuer des appels individuels aux méthodes exposées par le service Web.

Dans .NET, le "Service" expose directement les appels au service Web. Est-ce que quelqu'un peut expliquer la différence entre un port, un service, un localisateur et un point de terminaison quand il s'agit de services Web?

Axis:

PatientServiceImplServiceLocator locator = 
    new PatientServiceImplServiceLocator(); 
PatientService service = locator.getPatientServiceImplPort(); 

CXF:

PatientServiceImplService locator = new PatientServiceImplService(); 
PatientService service = locator.getPatientServiceImplPort(); 

.net:

Comme vous l'avez déjà mentionné
PatientServiceImplService service = new PatientServiceImplService(); 

Répondre

6

Je sauterais sur http://www.w3.org/TR/wsdl.html qui, je pense, explique Port, Service et Endpoint raisonnablement bien. Un localisateur est un mécanisme spécifique à l'implémentation que certaines piles WS utilisent pour fournir un accès aux points de terminaison du service.

1

, ces termes signifient des choses différentes dans différentes piles - il n'y a pas un bonne réponse générique pour les services Web.

31

J'ai trouvé l'information basée sur la réponse de Kevin Kenny, mais j'ai pensé que je l'afficherais ici pour les autres. Un document WSDL définit les services comme des ensembles de points de terminaison réseau ou ports. Dans WSDL, la définition abstraite des points de terminaison et des messages est séparée de leur déploiement réseau concret ou des liaisons de format de données. Cela permet de réutiliser des définitions abstraites: des messages, qui sont des descriptions abstraites des données échangées, et des types de ports qui sont des collections abstraites d'opérations. Le protocole concret et les spécifications de format de données pour un type de port particulier constituent une liaison réutilisable. Un port est défini en associant une adresse réseau à une liaison réutilisable et une collection de ports définit un service. Par conséquent, un document WSDL utilise les éléments suivants dans la définition des services de réseau:

  • Types - un conteneur pour les définitions de type de données en utilisant un système de type (comme XSD).
  • Message - une définition abstraite et typée des données communiquées.
  • Opération - description abstraite d'une action prise en charge par le service.
  • Type de port - ensemble abstrait d'opérations prises en charge par un ou plusieurs points de terminaison.
  • Liaison - une spécification concrète de protocole et de format de données pour un type de port particulier.
  • Port - un point d'extrémité unique défini comme une combinaison d'une liaison et d'une adresse réseau.
  • Service - une collection de points de terminaison connexes.
3

Je voudrais ajouter que <port> et <endpoint> servir le même but, mais port est utilisé par WSDL 1.1 et endpoint par WSDL 2.0.

Cela m'a troublé au début.

Questions connexes