Was ist ein Webdienst-Endpunkt?

323

Angenommen, mein Webdienst befindet sich unter http://localhost:8080/foo/mywebserviceund meine WSDL befindet sich unter http://localhost:8080/foo/mywebservice?wsdl.

Ist http://localhost:8080/foo/mywebserviceein Endpunkt derselbe wie der URI meines Webdienstes oder wo die SOAP-Nachrichten empfangen und nicht gemarshallt wurden?

Könnten Sie mir bitte erklären, was es ist und wozu es dient?

Karakays
quelle

Antworten:

416

Dies ist eine kürzere und hoffentlich klarere Antwort ... Ja, der Endpunkt ist die URL, über die eine Clientanwendung auf Ihren Dienst zugreifen kann. Der gleiche Webdienst kann mehrere Endpunkte haben, um ihn beispielsweise mit unterschiedlichen Protokollen verfügbar zu machen.

lbalazscs
quelle
8
@ user137717 Nein, Websites sind keine Webdienste. Ein Webdienst wird hauptsächlich von Anwendungen verwendet, während Websites hauptsächlich für Menschen bestimmt sind.
lbalazscs
4
@ user137717 Der Endpunkt ist die URL, über die eine Clientanwendung auf Ihren Webdienst zugreifen kann. Wenn Sie nicht verstehen, was ein Webdienst ist, lesen Sie zum Beispiel Folgendes
lbalazscs
1
+1 auch von mir und eine Frage: Warum nennst du es nicht einfach (dh den sogenannten "Endpunkt") einen "Basis-URI"? Gibt es einen grundlegenden Unterschied zwischen einem "Endpunkt" und einem "Basis-URI"? Vielen Dank.
Zurückgehalten
1
@Withheld Konzeptionell gibt es einen Unterschied zwischen einem Endpunkt und seiner Adresse, aber in der Praxis ist normalerweise die Adresse gemeint, da Sie normalerweise einen Client mit einem "Endpunkt" konfigurieren müssen, um den Dienst zu finden.
lbalazscs
2
@lbalazscs - IP-Adresse: 8080 / foo / ShoppingWebservice / Toys , IP-Adresse: 8080 / foo / ShoppingWebservice / Books usw. - Wie heißt der Teil / Toys, / Books? Werden sie auch Endpunkte oder Ressourcen genannt?
MasterJoe2
47

Aktualisierte Antwort von Peter in Kommentaren:

Dies ist die "alte Terminologie". Verwenden Sie direkt die WSDL2-Definition "endepoint" (WSDL2 übersetzt "port" in "endpoint").


Vielleicht finden Sie in diesem Dokument eine Antwort: http://www.w3.org/TR/wsdl.html

Ein WSDL-Dokument definiert Dienste als Sammlungen von Netzwerkendpunkten oder Ports. In WSDL wird die abstrakte Definition von Endpunkten und Nachrichten von ihrer konkreten Netzwerkbereitstellung oder Datenformatbindung getrennt. Dies ermöglicht die Wiederverwendung abstrakter Definitionen: Nachrichten, die abstrakte Beschreibungen der ausgetauschten Daten sind, und Porttypen, die abstrakte Sammlungen von Operationen sind. Die konkreten Protokoll- und Datenformatspezifikationen für einen bestimmten Porttyp stellen eine wiederverwendbare Bindung dar. Ein Port wird definiert, indem eine Netzwerkadresse einer wiederverwendbaren Bindung zugeordnet wird, und eine Sammlung von Ports definiert einen Dienst. Daher verwendet ein WSDL-Dokument die folgenden Elemente bei der Definition von Netzwerkdiensten:

  • Typen - ein Container für Datentypdefinitionen unter Verwendung eines Typsystems (z. B. XSD).
  • Nachricht - eine abstrakte, typisierte Definition der zu übermittelnden Daten.
  • Operation - eine abstrakte Beschreibung einer vom Dienst unterstützten Aktion.
  • Porttyp - eine abstrakte Gruppe von Vorgängen, die von einem oder mehreren Endpunkten unterstützt werden.
  • Bindung - eine konkrete Protokoll- und Datenformatspezifikation für einen bestimmten Porttyp.
  • Port - Ein einzelner Endpunkt, der als Kombination aus einer Bindung und einer Netzwerkadresse definiert ist.
  • Service - eine Sammlung verwandter Endpunkte.

http://www.ehow.com/info_12212371_definition-service-endpoint.html

Der Endpunkt ist ein Verbindungspunkt, an dem HTML-Dateien oder aktive Serverseiten verfügbar gemacht werden. Endpunkte bieten Informationen, die zur Adressierung eines Webdienst-Endpunkts erforderlich sind. Der Endpunkt stellt eine Referenz oder Spezifikation bereit, die verwendet wird, um eine Gruppe oder Familie von Nachrichtenadressierungseigenschaften zu definieren und End-to-End-Nachrichtenmerkmale anzugeben, z. B. Referenzen für die Quelle und das Ziel von Endpunkten sowie die Identität von Nachrichten, um eine Einheitlichkeit zu ermöglichen Adressierung von "unabhängigen" Nachrichten. Der Endpunkt kann ein PC, ein PDA oder ein Kassenterminal sein.

Julien
quelle
72
"Endpunkte enthalten Informationen, die zum Adressieren eines Webdienst-Endpunkts erforderlich sind." Ich muss diesen Satz lieben! : D
Musaul
2
Dies ist die "alte Terminologie". Verwenden Sie direkt die WSDL2-Definition "endepoint" (WSDL2 übersetzt "port" in "endpoint").
Peter Krauss
34

Ein Webdienst-Endpunkt ist die URL, über die ein anderes Programm mit Ihrem Programm kommunizieren würde. Um die WSDL anzuzeigen, fügen Sie ?wsdlsie der Webdienst-Endpunkt-URL hinzu.

Webdienste dienen der Programm-zu-Programm- Interaktion, während Webseiten der Programm-zu-Mensch- Interaktion dienen.

Also: Endpunkt ist: http://www.blah.com/myproject/webservice/webmethod

Daher lautet WSDL: http://www.blah.com/myproject/webservice/webmethod?wsdl


Um die Elemente einer WSDL weiter zu erweitern, finde ich es immer hilfreich, sie mit Code zu vergleichen:

Eine WSDL besteht aus 2 Teilen (physisch und abstrakt).

Physischer Teil:

Definitionen - Variablen - Beispiel: myVar, x, y usw.

Typen - Datentypen - Beispiel: int, double, String, myObjectType

Operationen - Methoden / Funktionen - Beispiel: myMethod (), myFunction () usw.

Meldungen - Methoden- / Funktionseingabeparameter und Rückgabetypen

  • Beispiel: public myObjectType myMethod ( String myVar)

Porttypen - Klassen (dh sie sind ein Container für Operationen) - Beispiel: MyClass {} usw.

Abstrakter Teil:

Bindung - Diese stellen eine Verbindung zu den Porttypen her und definieren das ausgewählte Protokoll für die Kommunikation mit diesem Webdienst. - Ein Protokoll ist eine Form der Kommunikation (also Text / SMS vs. Telefon vs. E-Mail usw.).

Dienst - Hier wird die Adresse aufgelistet, an der ein anderes Programm Ihren Webdienst finden kann (dh Ihren Endpunkt ).

specialk1st
quelle
5
Ich fand "Webdienste sind für die Interaktion von Programm zu Programm, während Webseiten für die Interaktion von Programm zu Mensch sind" eine sehr nützliche Aussage, um mich nicht zu rätseln, "warum zum Teufel würden die Leute den Endpunkt nicht einfach als URL bezeichnen"
Minnie
14

In früheren Projekten, an denen ich gearbeitet habe, war der Endpunkt eine relative Eigenschaft. Das heißt, es kann angehängt worden sein oder nicht, aber es enthielt immer das protocol://host:port/partOfThePath.

Wenn der aufgerufene Dienst einen dynamischen Teil enthält, z. B. a ?param=dynamicValue, wird dieser Teil dem Endpunkt hinzugefügt. Der Endpunkt kann jedoch häufig unverändert verwendet werden, ohne dass er geändert werden muss.

Es ist wichtig zu verstehen, was ein Endpunkt nicht ist und wie er hilft. Eine alternative Möglichkeit zum Übergeben der in einem Endpunkt gespeicherten Informationen besteht beispielsweise darin, die verschiedenen Teile des Endpunkts in separaten Eigenschaften zu speichern. Zum Beispiel:

hostForServiceA=someIp
portForServiceA=8080
pathForServiceA=/some/service/path
hostForServiceB=someIp
portForServiceB=8080
pathForServiceB=/some/service/path

Oder wenn derselbe Host und Port über mehrere Dienste verteilt ist:

host=someIp
port=8080
pathForServiceA=/some/service/path
pathForServiceB=/some/service/path

In diesen Fällen müsste die vollständige URL in Ihrem Code als solcher erstellt werden:

String url = "http://" + host + ":" + port + pathForServiceA  + "?" + dynamicParam + "=" + dynamicValue;

Im Vertrag kann dies als Endpunkt als solcher gespeichert werden

serviceAEndpoint=http://host:port/some/service/path?dynamicParam=

Und ja, oft haben wir den Endpunkt bis einschließlich '=' gespeichert. Dies führte zu Code wie folgt:

String url = serviceAEndpoint + dynamicValue;

Hoffe das bringt etwas Licht.

Jose Martinez
quelle
7

Einfach ausgedrückt ist ein Endpunkt ein Ende eines Kommunikationskanals. Wenn eine API mit einem anderen System interagiert, werden die Berührungspunkte dieser Kommunikation als Endpunkte betrachtet. Bei APIs kann ein Endpunkt eine URL eines Servers oder Dienstes enthalten. Jeder Endpunkt ist der Speicherort, von dem aus APIs auf die Ressourcen zugreifen können, die sie zur Ausführung ihrer Funktion benötigen.

APIs arbeiten mit "Anfragen" und "Antworten". Wenn eine API Informationen von einer Webanwendung oder einem Webserver anfordert, erhält sie eine Antwort. Der Ort, an dem APIs Anforderungen senden und an dem sich die Ressource befindet, wird als Endpunkt bezeichnet.

Referenz: https://smartbear.com/learn/performance-monitoring/api-endpoints/

Satya
quelle
6

Ein Endpunkt wird als relative oder absolute URL angegeben, die normalerweise zu einer Antwort führt. Diese Antwort ist normalerweise das Ergebnis eines serverseitigen Prozesses, der beispielsweise eine JSON-Zeichenfolge erzeugen könnte. Diese Zeichenfolge kann dann von der Anwendung verwendet werden, die den Endpunkt aufgerufen hat. Im Allgemeinen sind Endpunkte vordefinierte Zugriffspunkte, die in TCP / IP-Netzwerken verwendet werden, um einen Prozess zu initiieren und / oder eine Antwort zurückzugeben. Endpunkte können Parameter enthalten, die innerhalb der URL übergeben werden. Als Schlüsselwertpaare werden mehrere Schlüsselwertpaare durch ein kaufmännisches Und getrennt, sodass der Endpunkt beispielsweise einen Aktualisierungs- / Einfügevorgang aufrufen kann. Endpunkte müssen also nicht immer eine Antwort zurückgeben, aber eine Antwort ist immer nützlich, auch wenn sie nur den Erfolg oder Misserfolg einer Operation anzeigt.

Martyn Wynn
quelle