Creazione del proxy del servizio Web

Un client e un servizio Web possono comunicare tramite messaggi SOAP. Questi incapsulano i parametri di input e output come XML. Una classe proxy esegue il mapping tra i parametri e gli elementi XML, quindi invia i messaggi SOAP in una rete. In questo modo, la classe proxy elimina l'esigenza di comunicare con il servizio Web a livello SOAP e consente di richiamare i metodi del servizio Web in qualsiasi ambiente di sviluppo che supporti i proxy del servizio Web e SOAP.

È possibile aggiungere una classe proxy al progetto di sviluppo utilizzando .NET Framework in due modi: con lo strumento WSDL in .NET Framework e aggiungendo un riferimento Web in Visual Studio. Nelle sezioni seguenti questo argomento viene illustrato in modo più dettagliato.

Aggiunta del proxy utilizzando lo strumento WSDL

.NET Framework SDK include lo strumento WSDL (Web Services Description Language) (Wsdl.exe) che consente di generare un proxy del servizio Web per l'utilizzo nell'ambiente di sviluppo di .NET Framework. Il modo più comune per creare un proxy client in linguaggi che supportano i servizi Web (attualmente C# e Visual Basic) consiste nell'utilizzare lo strumento WSDL.

Per aggiungere una classe proxy al progetto utilizzando Wsdl.exe

  1. Dal prompt dei comandi utilizzare Wsdl.exe per creare una classe proxy, specificando almeno l'URL del servizio Web ReportServer.

    Nell'istruzione del prompt dei comandi seguente viene ad esempio specificato un URL per l'endpoint di gestione del servizio Web ReportServer:

    wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2005" http://<Server Name>/reportserver/reportservice2005.asmx?wsdl
    

    Lo strumento WSDL accetta diversi argomenti del prompt dei comandi per la generazione di un proxy. Nell'esempio precedente sono specificati il linguaggio C# e uno spazio dei nomi suggerito da utilizzare nel proxy (per impedire il conflitto tra i nomi in caso di utilizzo di più di un endpoint servizio Web) e viene generato un file C# denominato ReportingService2005.cs. Se nell'esempio fosse stato specificato Visual Basic, sarebbe stato generato un file proxy denominato ReportingService2005.vb. Questo file viene creato nella directory dalla quale si esegue il comando.

  2. Compilare la classe proxy in un file di assembly (con estensione dll) e farvi riferimento nel progetto oppure aggiungere la classe come elemento del progetto.

    [!NOTA]

    Quando si aggiunge manualmente una classe proxy al progetto, è necessario aggiungere un riferimento a System.Web.Services.dll. Se si aggiunge il proxy utilizzando un riferimento Web in Visual Studio .NET, il riferimento viene creato automaticamente. Per ulteriori informazioni, vedere "Aggiunta del proxy utilizzando un riferimento Web in Visual Studio" più avanti in questo argomento.

    Dopo avere aggiunto la classe proxy come elemento nel progetto, il file associato viene visualizzato in Esplora soluzioni.

  3. Per chiamare il servizio a livello di programmazione, creare un'istanza della classe proxy.

    Nell'esempio di codice seguente viene illustrata la sintassi per la creazione di un'istanza della classe proxy ReportingService2005 in un progetto:

Dim service As New ReportingService2005()
ReportingService2005 service = new ReportingService2005();

Per ulteriori informazioni sullo strumento Wsdl.exe, inclusa la sintassi completa, vedere l'argomento relativo allo strumento WSDL nella documentazione di .NET Framework SDK. Per una spiegazione completa relativa ai proxy del servizio Web, vedere l'argomento relativo alla creazione di un proxy del servizio Web XML nella documentazione di .NET Framework SDK.

Aggiunta del proxy utilizzando un riferimento Web in Visual Studio

Un riferimento Web consente l'utilizzo di uno o più servizi Web in un progetto. Visual Studio consente agli utenti di aggiungere ai progetti riferimenti al servizio Web tramite alcuni semplici passaggi.

Per aggiungere un riferimento Web a un progetto

  1. In Esplora soluzioni selezionare il progetto in cui verrà utilizzato il servizio Web.

  2. Scegliere Aggiungi riferimento Web dal menu Progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi riferimento Web.

  3. Nel campo URL immettere il percorso completo del servizio Web ReportServer.

    Un URL semplificato per l'endpoint di esecuzione del report del servizio Web ReportServer potrebbe essere simile al seguente:

    http://<Server Name>/reportserver/reportexecution2005.asmx
    

    L'URL contiene il dominio nel quale viene distribuito il servizio Web ReportServer, il nome della cartella contenente il servizio e il nome del file di individuazione per il servizio. Per una descrizione completa dei diversi elementi dell'URL, vedere Accesso all'API SOAP.

    Una descrizione delle proprietà e dei metodi forniti dal servizio Web viene visualizzata nel riquadro del visualizzatore a sinistra.

    [!NOTA]

    Per ulteriori informazioni sugli elementi associati al servizio Web ReportServer, vedere Metodi del servizio Web ReportServer.

  4. Verificare che il progetto possa utilizzare il servizio Web ReportServer, nonché di disporre delle autorizzazioni appropriate per l'accesso al server di report.

  5. Nel campo Nome riferimento Web immettere un nome che verrà utilizzato nel codice per accedere a livello di programmazione al servizio Web ReportServer.

  6. Fare clic sul pulsante Aggiungi riferimento per creare un riferimento al servizio Web nell'applicazione.

    Il nuovo riferimento verrà visualizzato in Esplora soluzioni nel nodo Riferimenti Web per il progetto attivo e con il nome specificato nel campo Nome riferimento Web.

  7. In Esplora soluzioni espandere la cartella Riferimenti Web per visualizzare lo spazio dei nomi per le classi del riferimento Web disponibili per gli elementi del progetto.

    Dopo avere aggiunto un riferimento Web al progetto, i file associati vengono visualizzati in una cartella all'interno della cartella Riferimenti Web di Esplora soluzioni.

Dopo avere aggiunto il riferimento Web, utilizzare la sintassi seguente per creare un'istanza della classe proxy:

Dim rs As New myNamespace.myReferenceName.ReportExecutionService()
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
myNamespace.myReferenceName.ReportExecutionService rs = new myNamespace.myReferenceName.ReportExecutionService();
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

È inoltre possibile aggiungere una direttiva using (Import in Visual Basic) al riferimento al servizio Web ReportServer. Quando si utilizza questa direttiva, non è necessario specificare il nome completo dei tipi nello spazio dei nomi. A tale scopo, aggiungere al file il codice seguente:

Import myNamespace.myReferenceName
using myNamespace.myReferenceName;