Modello a oggetti per la programmazione Web WCF
Il modello di programmazione Web HTTP 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 Web HTTP si basa sul modello di estendibilità WCF esistente. Definisce le classi seguenti:
Modello di programmazione:
Infrastruttura del dispatcher e dei canali:
Classi di utilità e punti di estendibilità:
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 all'insieme dei comportamenti del servizio non venga aggiunto un comportamento che ricerca questi metadati nella descrizione dell'operazione (specificatamente WebHttpBehavior). L'attributo WebGetAttribute accetta i parametri facoltativi nella tabella seguente.
Parametro | Descrizione |
---|---|
BodyStyle |
Controlla se eseguire il wrapping delle richieste e delle risposte inviate 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 quali richieste GET vengono mappate all'operazione del servizio a cui è applicato l'attributo. |
WebHttpBinding
WebHttpBinding incorpora il supporto per XML, JSON, e i dati binari non elaborati utilizzando l'elementoWebMessageEncodingBindingElement. La classe è composta da un costruttore HttpsTransportBindingElement, un costruttore HttpTransportBindingElement e un oggetto WebHttpSecurity. L'elemento WebHttpBinding è stato progettato per essere utilizzato con 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 all'insieme dei comportamenti del servizio non venga aggiunto un comportamento che ricerca questi metadati nella descrizione dell'operazione (specificatamente WebHttpBehavior).
L'attributo WebGetAttribute accetta i parametri facoltativi nella tabella seguente.
Parametro | Descrizione |
---|---|
BodyStyle |
Controlla se eseguire il wrapping delle richieste e delle risposte inviate 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 una serie 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 non in coppia. La classe UriTemplate viene utilizzata internamente dal modello di programmazione Web WCF per eseguire il mapping di URI o gruppi specifici a operazioni del servizio.
UriTemplateTable
La classe UriTemplateTable rappresenta una serie associativa di oggetti UriTemplate associati a un oggetto scelto dallo sviluppatore. La classe consente di far corrispondere gli URI (Uniform Resource Identifier) candidati ai modelli presenti nella serie e di recuperare i dati associati ai modelli corrispondenti. La classe UriTemplateTable viene utilizzata internamente dal modello di programmazione Web WCF per eseguire il mapping di URI o gruppi 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 disattiva 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 protezione 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 le altre cose, i formattatori e i selettori di operazioni necessari per il supporto del servizio web a livello del 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 sul browser. HTML Form Handler Sample è un esempio di utilizzo di questo punto di estendibilità.
WebHttpDispatchOperationSelector
WebHttpDispatchOperationSelector utilizza le classi UriTemplate e UriTemplateTable per inviare chiamate alle operazioni del servizio.
Compatibilità
Il modello di programmazione Web WCF non utilizza messaggi basati su SOAP e non supporta quindi il protocollo WS-*. È tuttavia possibile esporre lo stesso contratto mediante 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.
Vedere anche
Riferimenti
WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector