Condividi tramite


Aggiunta di supporto per la traccia SOAP nelle applicazioni client

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Quando si sviluppano applicazioni client Web per i servizi Web XML nativi in SQL Server, 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 Applicazioni di esempio per l'invio di richieste ai servizi Web XML nativi. È consigliabile acquisire familiarità con le informazioni concettuali e sulle procedure indicate in Impostazione del server per l'attesa delle richieste di servizi Web XML nativi e Sviluppo di applicazioni client.

Se, inoltre, non si ha alcuna familiarità con il formato dei messaggi SOAP, vedere gli argomenti seguenti:

[!NOTA]

Nella procedura seguente si presuppone che l'utente abbia creato un'applicazione client SOAP utilizzando Visual Studio 2005 e abbia aggiunto un riferimento Web a un endpoint HTTP SOAP creato utilizzando SQL Server, come illustrato nell'argomento 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

  1. 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.

  2. Dal gruppo di programmi Microsoft Visual Studio 2005 del computer client avviare Microsoft Visual Studio 2005.

  3. Fare clic su Apri progetto.

  4. Individuare e selezionare i file del progetto client SOAP (con estensione csproj).

  5. Nella finestra Esplora soluzioni eseguire la procedura seguente:

    1. Selezionare il progetto per nome, fare clic con il pulsante destro del mouse, scegliere Aggiungi e quindi selezionare Aggiungi elemento esistente.

    2. Nella finestra di dialogo Aggiungi elemento esistente individuare e selezionare il file SqlSoapTracer.cs nella posizione in cui è stato salvato nel passaggio 1.

    3. Fare clic su Mostra tutti i file, espandere il nodo Riferimenti Web e quindi selezionare il file Reference.cs.

  6. 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]));
            }
    
  7. 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:

  1. 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.

  2. 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#).

  3. Aggiungere la classe SqlSoapTracer.cs al progetto come descritto nella sezione precedente.

  4. 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.

    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. 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.