Qual è la differenza tra un endpoint, un servizio e una porta quando si lavora con i servizi web?

StackOverflow https://stackoverflow.com/questions/11561

Domanda

Ho utilizzato Apache CXF per esporre circa dieci classi Java come servizi web.

Ho generato client utilizzando CXF, Axis e .NET.

In Axis e CXF viene generato un "Servizio" o "Locatore".Da questo servizio puoi ottenere un "Porto".La "Porta" viene utilizzata per effettuare chiamate individuali ai metodi esposti dal servizio web.

In .NET il "Servizio" espone direttamente le chiamate al servizio web.

Qualcuno può spiegare la differenza tra una porta, un servizio, un localizzatore e un endpoint quando si tratta di servizi web?

Asse:

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

CXF:

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

.netto:

PatientServiceImplService service = new PatientServiceImplService();
È stato utile?

Soluzione

Ci farei un salto http://www.w3.org/TR/wsdl.html che penso spieghi abbastanza bene Porta, Servizio ed Endpoint.Un localizzatore è un meccanismo specifico dell'implementazione utilizzato da alcuni stack WS per fornire l'accesso agli endpoint del servizio.

Altri suggerimenti

Ho trovato le informazioni in base alla risposta di Kevin Kenny, ma ho pensato di pubblicarle qui per altri.

Un documento WSDL definisce i servizi come raccolte di endpoint di rete o porte.In WSDL, la definizione astratta di endpoint e messaggi è separata dalla loro distribuzione di rete concreta o dai collegamenti al formato dei dati.Ciò consente il riutilizzo di definizioni astratte:messaggi, che sono descrizioni astratte dei dati scambiati, e tipi di porta che sono raccolte astratte di operazioni.Il protocollo concreto e le specifiche del formato dei dati per un particolare tipo di porta costituiscono un'associazione riutilizzabile.Una porta viene definita associando un indirizzo di rete a un collegamento riutilizzabile e una raccolta di porte definisce un servizio.Pertanto, un documento WSDL utilizza i seguenti elementi nella definizione dei servizi di rete:

  • Tipi– un contenitore per le definizioni dei tipi di dati che utilizzano un sistema di tipi (come XSD).
  • Messaggio– una definizione astratta e tipizzata dei dati oggetto di comunicazione.
  • Operazione– una descrizione astratta di un'azione supportata dal servizio.
  • Tipo di porta–un insieme astratto di operazioni supportate da uno o più endpoint.
  • Legame– un protocollo concreto e una specifica del formato dei dati per un particolare tipo di porta.
  • Porta– un singolo endpoint definito come una combinazione di un collegamento e un indirizzo di rete.
  • Servizio– una raccolta di endpoint correlati.

Vorrei aggiungerlo <port> E <endpoint> servono allo stesso scopo, ma port è utilizzato da WSDL 1.1 e endpoint daWSDL 2.0.

Come hai già accennato, questi termini significano cose diverse in stack diversi: non esiste una risposta generica giusta per i servizi web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top