Endpunktadresse

Eine Endpunktadresse stellt die Adresse eines Diensts im Netzwerk dar. Wenn Sie einen Kanal öffnen, müssen Sie durch Aufrufen der WsOpenChannel-Funktion die Endpunktadresse des Diensts angeben, mit dem Sie kommunizieren sollen, und den Kanal angeben, den Sie öffnen möchten.

Eine Endpunktadresse besteht aus:

  • eine URL
  • eine Gruppe von Headern (optional)
  • eine Reihe von Erweiterungen (optional)
  • eine optionale Identität , die die Sicherheitsidentität des Diensts darstellt.

Wenn eine Nachricht adressiert wird, wird die URL zum "An"-Header der Nachricht. Alle Header, die Teil der Endpunktadresse sind, werden ebenfalls der Nachricht hinzugefügt.

Diagramm: Endpunktadressheader, die einer Nachricht hinzugefügt werden

Kanäle adressieren automatisch alle gesendeten Nachrichten mithilfe der WS_ENDPOINT_ADDRESS-Struktur , die an WsOpenChannel übergeben wurde. Sie können auch die WsAddressMessage-Funktion verwenden, um dieses Standardverhalten zu überschreiben.

Wenn WS_ENDPOINT_ADDRESS als Parameter übergeben wird, erstellen die Funktionen WsOpenChannel und WsOpenServiceProxy eine Kopie des WS_ENDPOINT_ADDRESS-Parameters im Arbeitsspeicher, dessen Größe auf 65536 Bytes begrenzt ist. WsAddressMessage weist diese Einschränkung nicht auf, da keine Kopie des parameters WS_ENDPOINT_ADDRESS erstellt werden muss.

Die im Feld "Erweiterungen " von WS_ENDPOINT_ADDRESS angegebenen Erweiterungen werden nicht für die Adressierung der Nachricht verwendet, sondern sind stattdessen ein Erweiterbarkeitsmechanismus, der verwendet werden kann, um zusätzliche Informationen (z. B. Metadaten) über den Dienst bereitzustellen. Allgemeine Erweiterungen können mit der Funktion WsReadEndpointAddressExtension gelesen werden.

Das optionale Identitätsfeld der Endpunktadresse kann z. B. den DNS-Namen des Computers enthalten, auf dem der Dienst ausgeführt wird, oder den UPN des Windows-Kontos, unter dem der Dienst ausgeführt wird. Das Identitätsfeld wird nicht für die Adressierung der Nachricht verwendet, sondern kann zum Abrufen eines Sicherheitstokens für den Dienst (z. B. zum Abrufen eines Kerberos-Tickets für den Ziel-UPN) und zum Überprüfen der Identität der Dienstantworten (z. B. eine DNS-Identität verwendet werden, die für Namensprüfungen für das während SSL zurückgegebene Dienstzertifikat verwendet wird).

Endpunktadressen können mithilfe der Serialisierung mit dem WS_ENDPOINT_ADDRESS_TYPE Enumerationswert aus WS_TYPE gelesen und geschrieben werden. Beachten Sie, dass Sie zum Serialisieren einer Endpunktadresse die Version der Spezifikation kennen müssen, die für die Adressheader verwendet wird, wie in der WS_ADDRESSING_VERSION-Enumeration angegeben.