Condividi tramite


Modello a oggetti di programmazione HTTP Web WCF

Il modello di programmazione HTTP WEB WCF consente agli sviluppatori di esporre servizi Web Windows Communication Foundation (WCF) tramite richieste HTTP di base senza richiedere SOAP. Il modello di programmazione HTTP WEB WCF si basa sul modello di estendibilità WCF esistente. Definisce le classi seguenti:

Modello di programmazione:

Canali e l'infrastruttura del dispatcher:

Classi di utilità e punti di estendibilità:

AspNetCacheProfileAttribute

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

WebGetAttribute

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

Parametro Descrizione
BodyStyle Controlla se incapsulare richieste e risposte inviate e ricevute dall'operazione del servizio a cui l'attributo viene applicato.
RequestFormat Controlla la formattazione dei messaggi di richiesta.
ResponseFormat Controlla la formattazione dei messaggi di risposta.
UriTemplate Specifica il modello URI che controlla il mapping delle richieste HTTP all'operazione del servizio a cui è applicato l'attributo.

WebHttpBinding

La WebHttpBinding classe incorpora il supporto per i dati binari XML, JSON e non elaborati usando .WebMessageEncodingBindingElement È composto da un HttpsTransportBindingElementHttpTransportBindingElement oggetto e da un WebHttpSecurity oggetto . L'WebHttpBinding è progettato per essere utilizzato insieme all'oggetto WebHttpBehavior.

WebInvokeAttribute

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

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

Parametro Descrizione
BodyStyle Controlla se incapsulare richieste e risposte inviate e ricevute dall'operazione del servizio a cui l'attributo viene applicato.
Method Specifica il metodo HTTP a cui viene mappata l'operazione del servizio.
RequestFormat Controlla la formattazione dei messaggi di richiesta.
ResponseFormat Controlla la formattazione dei messaggi di risposta.
UriTemplate Specifica il modello URI che controlla il mapping delle richieste GET all'operazione del servizio su cui viene applicato l'attributo.

UriTemplate

La UriTemplate classe consente di definire un set di URI strutturalmente simili. I modelli sono costituiti da 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 all'interno di parentesi graffe [{ }], vincolato a corrispondere al contenuto di esattamente un 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 omessa completamente. 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 di variabili (?x={value}). I valori non abbinati non sono consentiti. UriTemplate viene usato internamente dal modello di programmazione HTTP WEB WCF per eseguire il mapping di URI o gruppi di URI specifici alle operazioni del servizio.

UriTemplateTable

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

WebServiceHost

WebServiceHost estende il ServiceHost per facilitare l'hosting di un servizio web in stile non-SOAP. Se WebServiceHost non trova endpoint nella descrizione del servizio, crea automaticamente un endpoint predefinito all'indirizzo di base del servizio. Quando si crea un endpoint HTTP predefinito, viene WebServiceHost disabilitata anche la pagina della Guida HTTP e la funzionalità WSDL GET (Web Services Description Language) in modo che l'endpoint dei metadati non interferisca con l'endpoint HTTP predefinito. WebServiceHost garantisce inoltre che tutti gli endpoint che usano WebHttpBinding abbiano il necessario WebHttpBehavior collegato. Infine, WebServiceHost configura automaticamente l'associazione dell'endpoint in modo che funzioni con le impostazioni di sicurezza di Internet Information Services (IIS) associate quando vengono usate in una directory virtuale sicura.

WebServiceHostFactory

La WebServiceHostFactory classe viene usata per creare dinamicamente un WebServiceHost oggetto quando un servizio è ospitato in Internet Information Services (IIS) o nel servizio attivazione processi Windows (WAS). A differenza di un servizio self-hosted in cui l'applicazione host crea l'istanza WebServiceHost, i servizi ospitati in IIS o WAS usano questa classe per creare l'oggetto WebServiceHost per il servizio. Il CreateServiceHost(Type, Uri[]) metodo viene chiamato quando viene ricevuta una richiesta in ingresso per il servizio.

WebHttpBehavior

La WebHttpBehavior classe fornisce i formattatori, i selettori di operazione necessari e così via, necessari per il supporto del servizio in stile Web a livello di modello di servizio. Viene implementato come comportamento dell'endpoint (usato insieme a WebHttpBinding) e consente di specificare formattatori e selettori di operazione per ogni endpoint, che consente alla stessa implementazione del servizio di esporre endpoint SOAP e POX.

Estensione di WebHttpBehavior

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

Il WebScriptEnablingBehavior è un esempio di estensione di WebHttpBehavior. WebScriptEnablingBehavior consente agli endpoint di Windows Communication Foundation (WCF) di ricevere richieste HTTP da un client AJAX basato su browser ASP.NET. Il servizio AJAX tramite HTTP POST è un esempio di utilizzo di questo punto di estendibilità.

Avvertimento

Quando si usa WebScriptEnablingBehavior, UriTemplate non sono supportati all'interno degli attributi WebGetAttribute o WebInvokeAttribute.

WebHttpDispatchOperationSelector

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

Compatibilità

Il modello di programmazione HTTP WEB WCF non usa messaggi basati su SOAP e pertanto non supporta i protocolli WS-*. È tuttavia possibile esporre lo stesso contratto da due endpoint diversi: uno che usa SOAP e l'altro che non usa SOAP. Per un esempio , vedere Procedura: Esporre un contratto ai client SOAP e Web .

Sicurezza

Poiché il modello di programmazione HTTP WEB WCF non supporta i protocolli WS-* l'unico modo per proteggere un servizio Web basato sul modello di programmazione HTTP WEB WCF consiste nell'esporre il servizio tramite SSL. Per altre informazioni sulla configurazione di SSL con IIS 7.0, vedere Come implementare SSL in IIS.

Vedere anche