Condividi tramite


Modello a oggetti per la programmazione HTTP Web di WCF

Il modello di programmazione HTTP Web di WCF consente agli sviluppatori di esporre servizi Web Windows Communication Foundation (WCF) tramite richieste HTTP di base, senza la necessità di utilizzare SOAP. Il modello di programmazione HTTP Web di WCF è basato sul modello di estensibilità WCF esistente. Definisce le classi seguenti:

Modello di programmazione:

Infrastruttura del dispatcher e dei canali:

Classi di utilità e punti di estensibilità:

AspNetCacheProfileAttribute

L'attributo AspNetCacheProfileAttribute, quando applicato a un'operazione di servizio, indica il profilo della cache di output ASP.NET nel file di configurazione che deve essere utilizzato per memorizzare nella cache le risposte dall'operazione nella cache di output ASP .NET. Questa proprietà accetta solo un parametro, il nome di profilo cache che specifica le impostazioni della cache nel file di configurazione.

WebGetAttribute

L'attributo WebGetAttribute viene utilizzato per contrassegnare un'operazione del servizio come operazione che risponde alle richieste HTTP GET. Si tratta di un comportamento di operazione passivo (i metodi IOperationBehavior non eseguono alcuna operazione) che aggiunge metadati alla descrizione dell'operazione. L'applicazione di WebGetAttribute non alcun effetto, a meno che alla raccolta dei comportamenti del servizio non venga aggiunto un comportamento che cerca questi metadati nella descrizione dell'operazione (in particolare, WebHttpBehavior). L'attributo WebGetAttribute accetta i parametri facoltativi indicati nella tabella seguente.

Parametro Descrizione

BodyStyle

Controlla se eseguire il wrapping delle richieste e delle risposte inviate alla e ricevute dall'operazione del servizio a cui è applicato l'attributo.

RequestFormat

Controlla la modalità di formattazione dei messaggi di richiesta.

ResponseFormat

Controlla la modalità di formattazione dei messaggi di risposta.

UriTemplate

Specifica il modello di URI che controlla le richieste HTTP mappate all'operazione del servizio a cui è applicato l'attributo.

WebHttpBinding

La classe WebHttpBinding incorpora il supporto per XML, JSON e i dati binari non elaborati utilizzando l'elemento WebMessageEncodingBindingElement. La classe è costituita da un oggetto HttpsTransportBindingElement, HttpTransportBindingElement e da un oggetto WebHttpSecurity. La classe WebHttpBinding è progettata per essere utilizzata insieme a WebHttpBehavior.

WebInvokeAttribute

L'attributo WebInvokeAttribute è simile a WebGetAttribute, ma viene utilizzato per contrassegnare un'operazione del servizio come operazione che risponde alle richieste HTTP diverse da GET. Si tratta di un comportamento di operazione passivo (i metodi IOperationBehavior non eseguono alcuna operazione) che aggiunge metadati alla descrizione dell'operazione. L'applicazione di WebInvokeAttribute non alcun effetto, a meno che alla raccolta dei comportamenti del servizio non venga aggiunto un comportamento che cerca questi metadati nella descrizione dell'operazione (in particolare, WebHttpBehavior).

L'attributo WebInvokeAttribute accetta i parametri facoltativi indicati nella tabella seguente.

Parametro Descrizione

BodyStyle

Controlla se eseguire il wrapping delle richieste e delle risposte inviate alla e ricevute dall'operazione del servizio a cui è applicato l'attributo.

Method

Specifica il metodo HTTP a cui è mappata l'operazione del servizio.

RequestFormat

Controlla la modalità di formattazione dei messaggi di richiesta.

ResponseFormat

Controlla la modalità di formattazione dei messaggi di risposta.

UriTemplate

Specifica il modello di URI che controlla quali richieste GET vengono mappate all'operazione del servizio a cui è applicato l'attributo.

UriTemplate

La classe UriTemplate consente di definire un set di URI strutturalmente simili. I modelli sono composti di due parti, un percorso e una query. Un percorso è costituito da una serie di segmenti delimitati da una barra (/). Ogni segmento può avere un valore letterale, un valore variabile (scritto tra parentesi graffe [{}], che deve corrispondere al contenuto di un solo segmento) o un carattere jolly (scritto come asterisco [*], che corrisponde al "resto del percorso") che deve essere visualizzato alla fine del percorso. L'espressione di query può essere interamente omessa. Se presente, specifica una serie non ordinata di coppie nome/valore. Gli elementi dell'espressione di query possono essere coppie letterali (?x=2) o coppie variabili (?x={valore}). Non sono consentiti valori in coppia. La classe UriTemplate viene utilizzata internamente dal modello di programmazione HTTP Web di WCF per eseguire il mapping di URI o gruppi di URI specifici a operazioni del servizio.

UriTemplateTable

La classe UriTemplateTable rappresenta un set associativo di oggetti UriTemplate associati a un oggetto scelto dallo sviluppatore. Consente di far corrispondere gli URI (Uniform Resource Identifier) candidati ai modelli presenti nel set e di recuperare i dati associati ai modelli corrispondenti. La classe UriTemplateTable viene utilizzata internamente dal modello di programmazione HTTP Web di WCF per eseguire il mapping di URI o gruppi di URI specifici a operazioni del servizio.

WebServiceHost

WebServiceHost estende ServiceHost per semplificare l'host di un servizio Web non SOAP. Se WebServiceHost non trova endpoint nella descrizione del servizio, crea automaticamente un endpoint predefinito all'indirizzo di base del servizio. Quando viene creato un endpoint HTTP predefinito, WebServiceHost disabilita anche la pagina della Guida HTTP e la funzionalità WSDL (Web Services Description Language) GET, in modo che l'endpoint dei metadati non interferisce con l'endpoint HTTP predefinito. WebServiceHost assicura inoltre che tutti gli endpoint che utilizzano WebHttpBinding siano collegati al necessario WebHttpBehavior. Infine, WebServiceHost configura automaticamente l'associazione dell'endpoint per utilizzare le impostazioni di sicurezza IIS (Internet Information Services) associate in caso di utilizzo in una directory virtuale protetta.

WebServiceHostFactory

La classe WebServiceHostFactory viene utilizzata per creare un WebServiceHost in modo dinamico, quando un servizio viene ospitato in IIS (Internet Information Services) o WAS (Windows Process Activation Service). A differenza dei servizi indipendenti, in cui l'applicazione host crea un'istanza di WebServiceHost, i servizi ospitati in IIS o WAS utilizzano questa classe per creare l'oggetto WebServiceHost per il servizio. Il metodo CreateServiceHost viene chiamato quando viene ricevuta una richiesta in ingresso per il servizio.

WebHttpBehavior

La classe WebHttpBehavior fornisce, tra gli altri, i formattatori e i selettori di operazioni necessari per il supporto del servizio web a livello di modello di servizio. La classe viene implementata come un comportamento dell'endpoint (utilizzato insieme con WebHttpBinding) e consente di specificare formattatori e selettori di operazioni per ogni endpoint, consentendo alla stessa implementazione del servizio di esporre endpoint SOAP e POX.

Estensione di WebHttpBehavior

WebHttpBehavior è estendibile utilizzando diversi metodi virtuali: GetOperationSelector, GetReplyClientFormatter, GetRequestClientFormatter, GetReplyDispatchFormatter e GetRequestDispatchFormatter. Gli sviluppatori possono derivare una classe da WebHttpBehavior ed eseguire l'override di questi metodi per personalizzare il comportamento predefinito.

WebScriptEnablingBehavior è un esempio di estensione di WebHttpBehavior. WebScriptEnablingBehavior consente agli endpoint Windows Communication Foundation (WCF) di ricevere richieste HTTP da un client AJAX ASP.NET basato su browser. Servizio AJAX con il protocollo HTTP POST è un esempio di utilizzo di questo punto di estensibilità.

Bb412204.Warning(it-it,VS.100).gif Attenzione:
Quando si utilizza WebScriptEnablingBehavior, non è supportato l'utilizzo di UriTemplate all'interno di attributi WebGetAttribute o WebInvokeAttribute.

WebHttpDispatchOperationSelector

La classe WebHttpDispatchOperationSelector utilizza le classi UriTemplate e UriTemplateTable per inviare chiamate alle operazioni del servizio.

Compatibilità

Il modello di programmazione HTTP Web di WCF non utilizza messaggi basati su SOAP e pertanto non supporta i protocolli WS-*. È tuttavia possibile esporre lo stesso contratto tramite due endpoint diversi, di cui uno utilizza SOAP e l'altro no. Per un esempio, vedere Procedura: esporre un contratto a client SOAP e Web.

Sicurezza

Poiché il modello di programmazione HTTP Web di WCF non supporta i protocolli WS-*, l'unico modo per proteggere un servizio Web basato sul modello di programmazione HTTP Web di WCF consiste nell'esporre il servizio tramite SSL. Per ulteriori informazioni su come configurare SSL con IIS 7.0, vedere Come implementare SSL in IIS (la pagina potrebbe essere in inglese).

Vedere anche

Riferimento

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

Concetti

Panoramica sul modello di programmazione HTTP Web WCF