Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.