Endpoint SOAP e HTTP
In questo esempio viene descritto come implementare un servizio basato su RPC e come esporlo nel formato SOAP e nel formato "POX" (Plain Old XML) utilizzando il modello di programmazione Web di WCF. Per ulteriori dettagli sull'associazione HTTP per il servizio, vedere l'esempio Servizio HTTP di base. Questo esempio si concentra sui dettagli che riguardano l'esposizione dello stesso servizio su SOAP e HTTP tramite associazioni diverse.
Dimostrazione
Esposizione di un servizio RPC su SOAP e HTTP con WCF.
Discussione
Questo esempio è costituito da due componenti: un progetto di applicazione Web (Service) contenente un servizio WCF e un'applicazione console (Client) che richiama le operazioni del servizio utilizzando associazioni SOAP e HTTP.
Il servizio WCF espone 2 operazioni, ovvero GetData
e PutData
, che eseguono l'eco della stringa passata come input. Le operazioni del servizio vengono annotate con WebGetAttribute e WebInvokeAttribute. Questi attributi controllano la proiezione HTTP di queste operazioni. Vengono inoltre annotate con OperationContractAttribute, consentendone l'esposizione su associazioni SOAP. Il metodo PutData
del servizio genera un oggetto WebFaultException che viene inviato di nuovo su HTTP utilizzando il codice di stato HTTP e su SOAP come errore SOAP.
Il file Web.config configura il servizio WCF con 3 endpoint:
L'endpoint ~/service.svc/mex che espone i metadati del servizio per l'accesso da client basati su SOAP.
L'endpoint ~/service.svc/http che consente ai client di accedere al servizio utilizzando l'associazione HTTP.
L'endpoint ~/service.svc/soap che consente ai client di accedere al servizio utilizzando SOAP sull'associazione HTTP.
L'endpoint HTTP viene configurato con un endpoint standard <webHttp> con helpEnabled impostato su true. Di conseguenza, il servizio espone una pagina della Guida basata su XHTML in corrispondenza di ~/service.svc/http/help che i client basati su HTTP possono utilizzare per accedere al servizio.
Del progetto client viene illustrato l'accesso al servizio tramite un proxy SOAP (generato tramite Aggiungi riferimento al servizio) e l'accesso al servizio tramite WebClient.
L'esempio è costituito da un servizio ospitato sul Web e da un'applicazione console. Quando l'applicazione console è in esecuzione, il client invia richieste al servizio e scrive nella finestra della console le informazioni pertinenti incluse nelle risposte.
Per eseguire l'esempio
Aprire la soluzione per l'esempio relativo agli endpoint SOAP e HTTP.
Premere F6 per compilare la soluzione.
Se non è già aperta, premere CTRL+W, S per aprire la finestra Esplora soluzioni.
Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto Service e posizionare il cursore sull'opzione del menu di scelta rapida Debug in modo che il menu di scelta rapida Avvia nuova istanza venga visualizzato. Fare clic su Avvia nuova istanza. Verrà avviato il server di sviluppo ASP.NET che ospita il servizio.
Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto Client e posizionare il cursore sull'opzione del menu di scelta rapida Debug in modo che il menu di scelta rapida Avvia nuova istanza venga visualizzato. Fare clic su Avvia nuova istanza.
Verrà visualizzata la finestra della console client in cui sono inclusi l'URI del servizio in esecuzione e l'URI della pagina della Guida HTML per il servizio in esecuzione. In qualsiasi momento è possibile visualizzare la pagina della Guida HTML digitando l'URI della pagina della Guida in un browser.
Durante l'esecuzione dell'esempio, il client scrive lo stato dell'attività corrente.
Premere un tasto qualsiasi per chiudere l'applicazione console client.
Premere MAIUSC+F5 per interrompere il debug del servizio.
Nell'area di notifica di Windows fare clic con il pulsante destro del mouse sull'icona del server di sviluppo ASP.NET, quindi scegliere Interrompi dal menu di scelta rapida.
Nota: |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, vedere la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\Web\SoapAndHttpEndpoints
|