Indirizzo endpoint
Un indirizzo endpoint rappresenta l'indirizzo di un servizio nella rete. Quando si apre un canale, chiamando la funzione WsOpenChannel , è necessario specificare l'indirizzo endpoint del servizio con cui comunicare, oltre a specificare il canale da aprire.
Un indirizzo endpoint è costituito da:
- URL
- set di intestazioni (facoltativo)
- set di estensioni (facoltativo)
- un'identità facoltativa che rappresenta l'identità di sicurezza del servizio.
Quando viene indirizzato un messaggio, l'URL diventa l'intestazione "To" del messaggio. Tutte le intestazioni che fanno parte dell'indirizzo dell'endpoint vengono aggiunte anche al messaggio.
I canali indirizzano automaticamente tutti i messaggi inviati usando la struttura WS_ENDPOINT_ADDRESS passata a WsOpenChannel. È anche possibile usare la funzione WsAddressMessage per eseguire l'override di questo comportamento predefinito.
Quando WS_ENDPOINT_ADDRESS viene passato come parametro, le funzioni WsOpenChannel e WsOpenServiceProxy creano una copia del parametro WS_ENDPOINT_ADDRESS in memoria e le relative dimensioni sono limitate da 65536 byte. WsAddressMessage non ha questa limitazione perché non richiede la creazione di una copia del parametro WS_ENDPOINT_ADDRESS .
Le estensioni specificate nel campo estensioni di WS_ENDPOINT_ADDRESS non vengono usate per indirizzare il messaggio, ma sono invece un meccanismo di estendibilità che può essere usato per fornire informazioni aggiuntive (ad esempio metadati) sul servizio. Le estensioni comuni possono essere lette con la funzione WsReadEndpointAddressExtension .
Il campo di identità facoltativo dell'indirizzo dell'endpoint può includere, ad esempio, il nome DNS del computer in cui è in esecuzione il servizio o l'UPN dell'account Windows in cui è in esecuzione il servizio. Il campo identity non viene usato per indirizzare il messaggio, ma può essere usato per ottenere un token di sicurezza per il servizio , ad esempio per ottenere un ticket Kerberos all'UPN di destinazione e per verificare l'identità delle risposte al servizio, ad esempio un'identità DNS usata per i controlli dei nomi sul certificato del servizio restituito durante SSL.
Gli indirizzi endpoint possono essere letti e scritti usando la serializzazione con il valore di enumerazione WS_ENDPOINT_ADDRESS_TYPE da WS_TYPE. Nota per serializzare un indirizzo endpoint, è necessario conoscere la versione della specifica utilizzata per le intestazioni di indirizzamento, come specificato nell'enumerazione WS_ADDRESSING_VERSION .