AspNetRouteIntegration
In questo esempio viene descritto come ospitare un servizio REST di Windows Communication Foundation (WCF) utilizzando route ASP.NET. L'esempio Servizio risorse di base mostra una versione indipendente di questo scenario e illustra l'implementazione del servizio in dettaglio. Questo argomento descrive la funzionalità di integrazione ASP.NET. Per ulteriori informazioni su routing ASP.NET, vedere System.Web.Routing.
Dettagli dell'esempio
Il servizio WCF presenta una raccolta di clienti in modo orientato alle risorse/REST. In modo analogo a un servizio WCF basato su SOAP, il servizio può essere ospitato in ASP.NET utilizzando un file con estensione svc. Tuttavia, spesso non si tratta della scelta consigliata per scenari HTTP perché richiede la presenza del file con estensione svc nell'URL del servizio. Inoltre, richiede la distribuzione di un file con estensione svc insieme alla libreria di servizi. È possibile evitare tali limitazioni ospitando il servizio mediante route ASP.NET, come illustrato nel presente esempio.
Nell'esempio il servizio viene ospitato in ASP.NET aggiungendo un oggetto ServiceRoute in un file Global.asax. ServiceRoute specifica il tipo di servizio ('Service' in questo caso), il tipo di factory dell'host del servizio da utilizzare per il servizio (WebServiceHostFactory in questo caso) e l'indirizzo HTTP di base per il servizio ('~/Customers' in questo caso).
In aggiunta a ciò, l'esempio include un file Web.config che aggiunge UrlRoutingModule (per attivare route ASP.NET) e include la configurazione per il servizio. In particolare, la configurazione imposta il servizio WCF con un WebHttpEndpoint predefinito che dispone dell'impostazione HelpEnabled configurata su true. Di conseguenza, l'infrastruttura WCF crea una pagina automatica della Guida basata su HTML all'indirizzo https://localhost/Customers/help
, che fornisce informazioni su come creare richieste HTTP per il servizio e come accedere alla risposta HTTP del servizio, quali un esempio di come i dettagli del cliente vengono rappresentati in XML e JSON.
La presentazione della raccolta di clienti (e, in termini più generali, di qualsiasi risorsa) in questo modo consente a un client di interagire con un servizio in modo uniforme utilizzando URI e richieste HTTP GET, PUT, DELETE e POST.
Il file Program.cs nel progetto Client dimostra come è possibile creare tale client utilizzando HttpWebRequest. È importante sottolineare che quella descritta è solo una delle modalità per accedere a un servizio WCF. È infatti possibile accedere al servizio utilizzando altre classi .NET Framework come la channel factory WCF e WebClient. Altri esempi in SDK (quali l'esempio Servizio HTTP di base e l'esempio Selezione automatica del formato) mostrano come utilizzare queste classi per comunicare con un servizio WCF.
L'esempio è costituito da 3 progetti:
- Service
Progetto di applicazione Web che include un servizio WCF HTTP ospitato in ASP.NET.
- Client
Progetto di applicazione console che effettua chiamate al servizio.
- Common
Libreria condivisa che contiene il tipoCustomer
utilizzato dal client e dal servizio. Quando viene eseguita l'applicazione console client, il client effettua richieste al servizio e scrive le informazioni pertinenti dalle risposte nella finestra della console.
Per utilizzare questo esempio
Aprire la soluzione per l'esempio relativo all'integrazione di route ASP.NET in Visual Studio 2010.
Premere F6 per compilare la soluzione.
Se non è già aperta, premere "CTRL+W, S" per aprire la finestra Esplora soluzioni.
Nelle finestre 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, quindi selezionare Avvia nuova istanza. Viene avviato il server di sviluppo ASP.NET, che ospita il servizio.
Nelle finestre 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, quindi selezionare Avvia nuova istanza.
Viene visualizzata la finestra della console client, che fornisce 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 e nell'area di notifica di Windows fare clic con il pulsante destro del mouse sull'icona del server di sviluppo ASP.NET, quindi selezionare Interrompi nel 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, andare alla pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\Web\AspNetRouteIntegration
|