Proxy del servizio
Un proxy di servizio è il proxy lato client per un servizio. Il proxy del servizio consente alle applicazioni di inviare e ricevere messaggi tramite un canale come chiamate al metodo.
I proxy del servizio vengono creati in base alle esigenze, aperti, usati per chiamare un servizio e chiusi quando non sono più necessari. In alternativa, un'applicazione può riutilizzare un proxy di servizio per connettersi ripetutamente allo stesso servizio senza la spesa di tempo e risorse necessarie per l'inizializzazione di un proxy di servizio più volte. Il diagramma seguente illustra il flusso dei possibili stati del proxy del servizio e le chiamate di funzione o gli eventi che portano da uno stato a un altro.
Questi stati proxy del servizio vengono enumerati nell'enumerazione WS_SERVICE_PROXY_STATE .
Come illustrato nel diagramma precedente e nel codice seguente, un proxy del servizio viene creato da una chiamata alla funzione WsCreateServiceProxy . Come parametri per questa chiamata, WWSAPI fornisce le enumerazioni seguenti:
Accetta anche parametri facoltativi usando i tipi di dati seguenti:
Dopo aver creato il proxy del servizio, la funzione WsCreateServiceProxy restituisce un riferimento al proxy del servizio , WS_SERVICE_PROXY, tramite un parametro out.
WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
WS_TCP_CHANNEL_BINDING,
WS_CHANNEL_TYPE_DUPLEX_SESSION,
NULL,
NULL,
0,
NULL,
0,
&serviceProxy,
error);
Dopo aver creato il proxy del servizio, l'applicazione può aprire il proxy del servizio per la comunicazione a un servizio chiamando la funzione WsOpenServiceProxy , passando una struttura di indirizzi contenente l'indirizzo di rete dell'endpoint del servizio a cui connettersi.
WS_ENDPOINT_ADDRESS address = {0};
address.uri.chars = "net.tcp://localhost/example";
address.uri.length = wcslen("net.tcp://localhost/example";);
hr = WsOpenServiceProxy(serviceProxy, &address, NULL, error);
Quando il proxy del servizio è stato aperto, l'applicazione può usarla per effettuare chiamate al servizio.
hr = Add(
serviceProxy,
1,
2,
&result,
NULL,
0,
NULL,
error);
Quando l'applicazione non necessita più del proxy del servizio, chiude il proxy del servizio chiamando la funzione WsCloseServiceProxy . Libera anche la memoria associata chiamando WsFreeServiceProxy.
hr = WsCloseServiceProxy(
serviceProxy,
NULL,
error);
hr = WsFreeServiceProxy(
serviceProxy,
error);
Riutilizzo del proxy del servizio
In alternativa, dopo aver chiamato WsCloseServiceProxy un'applicazione può riutilizzare il proxy del servizio chiamando la funzione WsResetServiceProxy .
hr = WsResetServiceProxy(
serviceProxy,
error);
Per altre informazioni sull'uso dei proxy di servizio in contesti diversi, vedere gli argomenti seguenti:
- Proxy e sessioni del servizio
- Operazione del servizio
- Operazioni sul lato client del servizio
- HttpCalculatorClientExample
Sicurezza
Quando si usa l'API proxy del servizio WWSAPI, tenere presente attentamente le considerazioni di progettazione dell'applicazione seguenti:
- Il proxy del servizio non eseguirà alcuna convalida dei dati oltre la convalida del profilo di base 2.0 e la serializzazione XML. È responsabilità dell'applicazione convalidare i dati contenuti nei parametri ricevuti come parte della chiamata.
- La configurazione del numero massimo di chiamate in sospeso nel proxy del servizio tramite il valore di enumerazione WS_PROXY_PROPERTY_ID WS_PROXY_PROPERTY_MAX_PENDING_CALLS offre protezione da un server a esecuzione lenta. Il valore massimo predefinito è 100. Le applicazioni devono prestare attenzione nella modifica delle impostazioni predefinite.
- Il proxy del servizio non fornisce garanzie di sicurezza oltre a quelle specificate nella struttura di WS_SECURITY_DESCRIPTION utilizzata per comunicare con il server.
- Prestare attenzione quando si modificano le impostazioni predefinite del messaggio e del canale nel proxy del servizio. Leggere le considerazioni sulla sicurezza associate a messaggi e canali prima di modificare le proprietà correlate.
- Il proxy del servizio crittografa tutte le credenziali che mantiene in memoria.
Gli elementi API seguenti sono correlati ai proxy del servizio.
Callback | Descrizione |
---|---|
WS_PROXY_MESSAGE_CALLBACK | Richiamato quando le intestazioni del messaggio di input stanno per essere inviate tramite o quando vengono appena ricevute intestazioni di messaggio di output. |
Enumerazione | Descrizione |
---|---|
WS_CALL_PROPERTY_ID | Enumera i parametri facoltativi per la configurazione di una chiamata su un'operazione sul lato client del servizio. |
WS_PROXY_PROPERTY_ID | Enumera i parametri facoltativi per la configurazione del proxy del servizio. |
WS_SERVICE_PROXY_STATE | Stato del proxy del servizio. |
Funzione | Descrizione |
---|---|
WsAbandonCall | Abbandona una chiamata specificata su un proxy di servizio specificato. |
WsAbortServiceProxy | Annulla tutti gli input e l'output in sospeso in un proxy di servizio specificato. |
WsCall | Solo interno. Serializza gli argomenti in un messaggio e lo invia sul canale. |
WsCloseServiceProxy | Chiude un proxy del servizio per la comunicazione. |
WsCreateServiceProxy | Crea un proxy del servizio. |
WsFreeServiceProxy | Rilascia la memoria associata a un proxy del servizio. |
WsGetServiceProxyProperty | Recupera una proprietà proxy del servizio specificata. |
WsOpenServiceProxy | Apre un proxy del servizio a un endpoint di servizio. |
WsResetServiceProxy | Reimposta il proxy del servizio. |
Handle | Descrizione |
---|---|
WS_SERVICE_PROXY | Tipo opaco utilizzato per fare riferimento a un proxy del servizio. |
Struttura | Descrizione |
---|---|
WS_CALL_PROPERTY | Specifica una proprietà di chiamata. |
WS_PROXY_PROPERTY. | Specifica una proprietà proxy. |