Adresse du point de terminaison

Une adresse de point de terminaison représente l’adresse d’un service sur le réseau. Lorsque vous ouvrez un canal, en appelant la fonction WsOpenChannel , vous devez fournir l’adresse de point de terminaison du service avec lequel communiquer, ainsi que spécifier le canal que vous souhaitez ouvrir.

Une adresse de point de terminaison se compose des éléments suivants :

  • une URL
  • un ensemble d’en-têtes (facultatif)
  • un ensemble d’extensions (facultatif)
  • identité facultative représentant l’identité de sécurité du service.

Lorsqu’un message est adressé, l’URL devient l’en-tête « À » du message. Tous les en-têtes qui font partie de l’adresse du point de terminaison sont également ajoutés au message.

Diagramme montrant les en-têtes d’adresse de point de terminaison ajoutés à un message.

Les canaux traitent automatiquement tous les messages envoyés, à l’aide de la structure WS_ENDPOINT_ADDRESS qui a été passée à WsOpenChannel. Vous pouvez également utiliser la fonction WsAddressMessage pour remplacer ce comportement par défaut.

Lorsque WS_ENDPOINT_ADDRESS est passé en tant que paramètre, les fonctions WsOpenChannel et WsOpenServiceProxy créent une copie du paramètre WS_ENDPOINT_ADDRESS en mémoire et sa taille est limitée à 65536 octets. WsAddressMessage n’a pas cette limitation, car il ne nécessite pas la création d’une copie du paramètre WS_ENDPOINT_ADDRESS .

Les extensions spécifiées dans le champ extensions de WS_ENDPOINT_ADDRESS ne sont pas utilisées pour traiter le message, mais sont plutôt un mécanisme d’extensibilité qui peut être utilisé pour fournir des informations supplémentaires (par exemple, des métadonnées) sur le service. Les extensions courantes peuvent être lues avec la fonction WsReadEndpointAddressExtension .

Le champ d’identité facultatif de l’adresse de point de terminaison peut inclure, par exemple, le nom DNS de l’ordinateur sur lequel le service s’exécute ou le nom UPN du compte Windows sous lequel le service s’exécute. Le champ identité n’est pas utilisé pour traiter le message, mais peut être utilisé pour obtenir un jeton de sécurité pour le service (par exemple, pour obtenir un ticket Kerberos pour l’UPN cible) et pour vérifier l’identité des réponses du service (par exemple, une identité DNS utilisée pour les vérifications de nom sur le certificat de service retourné pendant SSL).

Les adresses de point de terminaison peuvent être lues et écrites à l’aide de la sérialisation avec la valeur d’énumération WS_ENDPOINT_ADDRESS_TYPE de WS_TYPE. Notez que pour sérialiser une adresse de point de terminaison, vous devez connaître la version de la spécification utilisée pour les en-têtes d’adressage, comme spécifié dans l’énumération WS_ADDRESSING_VERSION .