Condividi tramite


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.

Diagram showing the service proxy states and the function calls or events that lead from one state to another.

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:

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.