Aggiunta di supporto per la traccia SOAP nelle applicazioni client
Quando si sviluppano applicazioni client Web per i servizi Web XML nativi in SQL Server 2005, un utile strumento per la risoluzione dei problemi è rappresentato dalla possibilità di osservare ed eseguire la traccia dei messaggi SOAP scambiati tra un'istanza di SQL Server e l'applicazione client.
In questo argomento è inclusa una libreria di classi di esempio che implementa intestazioni di estensioni SOAP che supportano la traccia SOAP del progetto di applicazione client da Visual Studio 2005. Quando vengono integrate nel progetto, tali estensioni eseguono la traccia del contenuto effettivo della richiesta SOAP e del messaggio di risposta e lo visualizzano.
Questa libreria può essere aggiunta a progetti client SOAP di Visual Studio 2005. Sono incluse le applicazioni di esempio disponibili in Sample Applications for Sending Native HTTP SOAP Requests (informazioni in lingua inglese). È consigliabile acquisire familiarità con le informazioni concettuali e sulle procedure indicate in Setting the Server to Listen for Native XML Web Services Requests e Writing Client Applications (informazioni in lingua inglese).
Se, inoltre, non si ha alcuna familiarità con il formato dei messaggi SOAP, vedere gli argomenti seguenti:
[!NOTA] Nella procedura seguente si suppone che sia stata creata un'applicazione client SOAP esistente utilizzando Visual Studio 2005 e che sia stato aggiunto un riferimento Web a un endpoint SOAP HTTP creato tramite SQL Server 2005, come illustrato in Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (C#).
Per aggiungere la libreria di esempio di traccia SOAP a un progetto di Visual Studio
Utilizzando il Blocco note, copiare e incollare il contenuto del codice disponibile in Listato di codice C# per la libreria di classi di esempio di traccia SQL SOAP e salvarlo con il nome "SqlSoapTracer.cs" nella cartella contenente i file del progetto client SOAP.
Dal gruppo di programmi Microsoft Visual Studio 2005 del computer client avviare Microsoft Visual Studio 2005.
Fare clic su Apri progetto.
Individuare e selezionare i file del progetto client SOAP (con estensione csproj).
Nella finestra Esplora soluzioni eseguire la procedura seguente:
- Selezionare il progetto per nome, fare clic con il pulsante destro del mouse, scegliere Aggiungi e quindi selezionare Aggiungi elemento esistente.
- Nella finestra di dialogo Aggiungi elemento esistente individuare e selezionare il file SqlSoapTracer.cs nella posizione in cui è stato salvato nel passaggio 1.
- Fare clic su Mostra tutti i file, espandere il nodo Riferimenti Web e quindi selezionare il file Reference.cs.
Nella finestra Editor del codice aggiornare il file Reference.cs individuando i punti di ingresso per i metodi Web.
Se, ad esempio, si desidera aggiungere il supporto per la traccia SOAP al progetto di esempio disponibile in Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (C#), i punti di ingresso per i diversi metodi Web pubblicati inclusi nel progetto verranno visualizzati nel modo seguente:
public object[] GetCustomerInfo([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Data.SqlTypes.SqlString CustomerID, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ref System.Data.SqlTypes.SqlString OutputParam) { object[] results = this.Invoke("s2MsgGetCustomerInfoSoapIn", new object[] { CustomerID, OutputParam}); OutputParam = ((System.Data.SqlTypes.SqlString)(results[1])); return ((object[])(results[0])); } ... public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() { object[] results = this.Invoke("s1MsgUDFReturningAScalarSoapIn", new object[0]); return ((System.Data.SqlTypes.SqlInt32)(results[0])); }
Per aggiungere il supporto per la traccia SOAP quando i metodi Web vengono eseguiti nel codice client, aggiungere la chiamata
snoopattribute()
seguente nel codice di Reference.cs direttamente prima del punto di ingresso per ogni metodo Web di cui si desidera eseguire la traccia, come illustrato nelle righe di codice seguenti.[snoopattribute()] public object[] GetCustomerInfo(...) {...} ... [snoopattribute()] public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
In questo modo, viene registrata un'estensione SOAP che richiama la traccia SOAP dei metodi Web quando questi vengono eseguiti.
Utilizzo del supporto per la traccia SOAP per verificare l'applicazione
Per utilizzare le estensioni di supporto per la traccia SOAP incluse nel codice precedente durante l'esecuzione dell'applicazione client SOAP nell'ambiente di sviluppo Visual Studio, è necessario completare la procedura seguente:
- Utilizzando SQL Server Management Studio o l'utilità da riga di comando osql, aggiungere un metodo Web per esporre la stored procedure o la funzione definita dall'utente che si desidera verificare nell'endpoint.
Per ulteriori informazioni, vedere Esposizione della programmabilità SQL sul Web. - In Visual Studio programmare e creare un progetto di applicazione client SOAP ed eseguirne il debug.
Se lo si desidera, è possibile utilizzare il progetto di esempio disponibile in Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (C#). - Aggiungere la classe SqlSoapTracer.cs al progetto come descritto nella sezione precedente.
- Salvare, creare ed eseguire l'applicazione client nell'ambiente di sviluppo Visual Studio.
Tramite l'esecuzione dell'applicazione viene creato un oggetto visualizzatore degli Appunti di Windows. Durante l'esecuzione dei metodi Web attivati per la traccia nel passaggio 3, tramite l'oggetto visualizzatore vengono visualizzati gli elementi seguenti per ciascun metodo Web:- Messaggio di richiesta client SOAP generato dal codice client.
- Messaggio di risposta server SOAP restituito dai servizi Web XML nativi per SQL Server 2005.
Per visualizzare il contenuto degli Appunti dopo l'esecuzione dell'attività di traccia, è possibile incollare il contenuto corrente degli Appunti di Windows in Blocco note.
Funzionamento del supporto per la traccia SOAP
Il meccanismo di traccia utilizza callback ed eventi predefiniti che fanno parte delle modalità di implementazione dei servizi Web XML nativi in SQL Server 2005. Sono inclusi due eventi: BeforeSerialize e AfterSerialize.
Tali eventi e callback consentono di rilevare e reindirizzare a un flusso di output la richiesta SOAP e la risposta SOAP corrispondente del server. Nel codice indicato, l'output viene reindirizzato a un oggetto System.Windows.Forms.Clipboard. L'oggetto Clipboard riceve e visualizza la richiesta client SOAP e i messaggi di risposta del server scambiati tramite l'esecuzione dei metodi Web direttamente preceduti da chiamate snoopattribute().
L'output della richiesta client e la relativa risposta inviata da SQL Server verranno visualizzati in un formato simile alla struttura dei messaggi di richiesta SOAP e alla struttura dei messaggi di risposta SOAP. Nella risposta verrà inoltre visualizzato qualsiasi risultato generato dal server, ad esempio l'output XML serializzato, se il metodo Web è stato eseguito correttamente. In caso di errore, all'interno della risposta restituita dal server verrà visualizzata una struttura dei messaggi di errore SOAP anziché l'output XML serializzato.
Vedere anche
Riferimento
Impostazione del server per l'attesa delle richieste di servizi Web XML nativi
Applicazioni di esempio per l'invio di richieste ai servizi Web XML nativi
Concetti
Procedure consigliate per l'utilizzo dei Servizi Web XML nativi